CondFormats
SiPixelObjects
src
PixelROC.cc
Go to the documentation of this file.
1
#include "
CondFormats/SiPixelObjects/interface/PixelROC.h
"
2
3
#include "
DataFormats/TrackerCommon/interface/PixelBarrelName.h
"
4
#include "
DataFormats/TrackerCommon/interface/PixelEndcapName.h
"
5
#include "
DataFormats/DetId/interface/DetId.h
"
6
7
#include <sstream>
8
#include <algorithm>
9
using namespace
std
;
10
using namespace
sipixelobjects
;
11
12
// Constructor with transformation frame initilization - NEVER CALLED
13
PixelROC::PixelROC(uint32_t du,
int
idDU,
int
idLk) : theDetUnit(du), theIdDU(idDU), theIdLk(idLk) {
14
initFrameConversion
();
15
}
16
17
// // for testing, uses topology fot det id, it works but I cannot pass topology here
18
// // not used
19
// void PixelROC::initFrameConversion(const TrackerTopology *tt, bool phase1) {
20
// const bool TEST = false;
21
// if(phase1) { // phase1
22
// bool isBarrel = PixelModuleName::isBarrel(theDetUnit);
23
// int side = 0;
24
// if(isBarrel) {
25
// // Barrel Z-index=1,8
26
// if((tt->pxbModule(theDetUnit))<5) side=-1;
27
// else side=1;
28
// if(TEST) {
29
// // phase0 code
30
// PXBDetId det(theDetUnit);
31
// unsigned int module = bpixSidePhase0(theDetUnit);
32
// if(!phase1 && (tt->pxbModule(theDetUnit) != module) )
33
// // phase1 code
34
// unsigned int module1 = bpixSidePhase1(theDetUnit);
35
// }
36
// } else {
37
// // Endcaps, use the panel to find the direction
38
// if((tt->pxfPanel(theDetUnit))==1) side=-1; // panel 1
39
// else side =1; // panel 2
40
// if(TEST) {
41
// // code -phase0
42
// PXFDetId det(theDetUnit);
43
// unsigned int module = fpixSidePhase0(theDetUnit);
44
// // phase1 code
45
// unsigned int module1 = fpixSidePhase1(theDetUnit);
46
// }
47
// }
48
// theFrameConverter = FrameConversion(isBarrel,side, theIdDU);
49
// } else { // phase0
50
// initFrameConversion(); // old code for phase0
51
// }
52
// }
53
54
// works for phase 1, find det side from the local method
55
// Frame conversion compatible with CMSSW_9_0_X Monte Carlo samples
56
void
PixelROC::initFrameConversionPhase1_CMSSW_9_0_X
() {
57
int
side = 0;
58
bool
isBarrel
=
PixelModuleName::isBarrel
(
theDetUnit
);
59
if
(
isBarrel
) {
60
side =
bpixSidePhase1
(
theDetUnit
);
// find the side for phase1
61
}
else
{
62
side =
fpixSidePhase1
(
theDetUnit
);
63
}
64
65
theFrameConverter
=
FrameConversion
(
isBarrel
, side,
theIdDU
);
66
}
67
68
// works for phase 1, find det side from the local method
69
void
PixelROC::initFrameConversionPhase1
() {
70
int
side = 0;
71
int
layer = 0;
72
bool
isBarrel
=
PixelModuleName::isBarrel
(
theDetUnit
);
73
if
(
isBarrel
) {
74
side =
bpixSidePhase1
(
theDetUnit
);
// find the side for phase1
75
layer =
bpixLayerPhase1
(
theDetUnit
);
76
}
else
{
77
side =
fpixSidePhase1
(
theDetUnit
);
78
}
79
80
theFrameConverter
=
FrameConversion
(
isBarrel
, side, layer,
theIdDU
);
81
}
82
83
// Works only for phase0, uses the fixed pixel id
84
void
PixelROC::initFrameConversion
() {
85
if
(
PixelModuleName::isBarrel
(
theDetUnit
)) {
86
PixelBarrelName
barrelName(
theDetUnit
);
87
theFrameConverter
=
FrameConversion
(barrelName,
theIdDU
);
88
}
else
{
89
PixelEndcapName
endcapName(
theDetUnit
);
90
theFrameConverter
=
FrameConversion
(endcapName,
theIdDU
);
91
}
92
}
93
94
// These are methods to find the module side.
95
// The are hardwired for phase0 and phase1
96
// Will not work for phase2 or when the detid coding changes.
97
int
PixelROC::bpixSidePhase0
(uint32_t rawId)
const
{
98
int
side = 1;
100
//const unsigned int layerStartBit_= 16;
101
//const unsigned int ladderStartBit_= 8;
102
const
unsigned
int
moduleStartBit_ = 2;
104
//const unsigned int layerMask_= 0xF;
105
//const unsigned int ladderMask_= 0xFF;
106
const
unsigned
int
moduleMask_ = 0x3F;
107
109
//unsigned int layer = (rawId>>layerStartBit_) & layerMask_;
111
//unsigned int ladder = (rawId>>ladderStartBit_) & ladderMask_;
113
unsigned
int
module = (
rawId
>> moduleStartBit_) & moduleMask_;
114
115
if
(module < 5)
116
side = -1;
// modules 1-4 are on -z
117
return
side;
118
}
119
int
PixelROC::bpixSidePhase1
(uint32_t rawId)
const
{
120
int
side = 1;
121
123
//const unsigned int layerStartBit_= 20;
124
//const unsigned int ladderStartBit_= 12;
125
const
unsigned
int
moduleStartBit_ = 2;
127
//const unsigned int layerMask_= 0xF;
128
//const unsigned int ladderMask_= 0xFF;
129
const
unsigned
int
moduleMask_ = 0x3FF;
130
132
//unsigned int layer = (rawId>>layerStartBit_) & layerMask_;
134
//unsigned int ladder = (rawId>>ladderStartBit_) & ladderMask_;
136
unsigned
int
module = (
rawId
>> moduleStartBit_) & moduleMask_;
137
138
if
(module < 5)
139
side = -1;
// modules 1-4 are on -z
140
return
side;
141
}
142
int
PixelROC::bpixLayerPhase1
(uint32_t rawId) {
144
const
unsigned
int
layerStartBit_ = 20;
145
//const unsigned int ladderStartBit_= 12;
146
//const unsigned int moduleStartBit_= 2;
148
const
unsigned
int
layerMask_ = 0xF;
149
//const unsigned int ladderMask_= 0xFF;
150
//const unsigned int moduleMask_= 0x3FF;
151
153
unsigned
int
layer = (
rawId
>> layerStartBit_) & layerMask_;
155
//unsigned int ladder = (rawId>>ladderStartBit_) & ladderMask_;
157
//unsigned int module = (rawId>>moduleStartBit_)& moduleMask_;
158
159
//if(module<5) side=-1; // modules 1-4 are on -z
160
return
layer;
161
}
162
163
int
PixelROC::fpixSidePhase0
(uint32_t rawId)
const
{
164
int
side = 1;
165
167
//const unsigned int sideStartBit_= 23;
168
//const unsigned int diskStartBit_= 16;
169
//const unsigned int bladeStartBit_= 10;
170
const
unsigned
int
panelStartBit_ = 8;
171
//const unsigned int moduleStartBit_= 2;
173
174
//const unsigned int sideMask_= 0x3;
175
//const unsigned int diskMask_= 0xF;
176
//const unsigned int bladeMask_= 0x3F;
177
const
unsigned
int
panelMask_ = 0x3;
178
//const unsigned int moduleMask_= 0x3F;
179
181
//unsigned int sides = int((rawId>>sideStartBit_) & sideMask_);
183
//unsigned int disk = int((rawId>>diskStartBit_) & diskMask_);
185
//unsigned int blade = ((rawId>>bladeStartBit_) & bladeMask_);
187
unsigned
int
panel = ((
rawId
>> panelStartBit_) & panelMask_);
189
//unsigned int module = ((rawId>>moduleStartBit_) & moduleMask_);
190
191
if
(panel == 1)
192
side = -1;
// panel 1 faces -z (is this true for all disks?)
193
return
side;
194
}
195
int
PixelROC::fpixSidePhase1
(uint32_t rawId)
const
{
196
int
side = 1;
197
199
//const unsigned int sideStartBit_= 23;
200
//const unsigned int diskStartBit_= 18;
201
//const unsigned int bladeStartBit_= 12;
202
const
unsigned
int
panelStartBit_ = 10;
203
//const unsigned int moduleStartBit_= 2;
205
206
//const unsigned int sideMask_= 0x3;
207
//const unsigned int diskMask_= 0xF;
208
//const unsigned int bladeMask_= 0x3F;
209
const
unsigned
int
panelMask_ = 0x3;
210
//const unsigned int moduleMask_= 0xFF;
211
213
//unsigned int sides = int((rawId>>sideStartBit_) & sideMask_);
215
//unsigned int disk = int((rawId>>diskStartBit_) & diskMask_);
216
218
//unsigned int blade = ((rawId>>bladeStartBit_) & bladeMask_);
219
221
unsigned
int
panel = ((
rawId
>> panelStartBit_) & panelMask_);
222
224
//unsigned int module = ((rawId>>moduleStartBit_) & moduleMask_);
225
226
if
(panel == 1)
227
side = -1;
// panel 1 faces -z (is this true for all disks?)
228
return
side;
229
}
230
231
string
PixelROC::print
(
int
depth
)
const
{
232
ostringstream
out
;
233
bool
barrel
=
PixelModuleName::isBarrel
(
theDetUnit
);
234
DetId
detId(
theDetUnit
);
235
if
(
depth
-- >= 0) {
236
out
<<
"======== PixelROC "
;
237
//out <<" unit: ";
238
//if (barrel) out << PixelBarrelName(detId).name();
239
//else out << PixelEndcapName(detId).name();
240
if
(
barrel
)
241
out
<<
" barrel "
;
242
else
243
out
<<
" endcap "
;
244
out
<<
" ("
<<
theDetUnit
<<
")"
245
<<
" idInDU: "
<<
theIdDU
<<
" idInLk: "
246
<<
theIdLk
247
// <<" frame: "<<theRowOffset<<","<<theRowSlopeSign<<","<<theColOffset<<","<<theColSlopeSign
248
// <<" frame: "<<*theFrameConverter
249
<< endl;
250
}
251
return
out
.str();
252
}
PixelBarrelName.h
Reference_intrackfit_cff.barrel
list barrel
Definition:
Reference_intrackfit_cff.py:37
sipixelobjects::PixelROC::theIdDU
unsigned int theIdDU
Definition:
PixelROC.h:82
sipixelobjects::PixelROC::theFrameConverter
FrameConversion theFrameConverter
Definition:
PixelROC.h:83
PixelBarrelName
Definition:
PixelBarrelName.h:16
DetId
Definition:
DetId.h:17
PixelEndcapName
Definition:
PixelEndcapName.h:16
sipixelobjects::PixelROC::fpixSidePhase1
int fpixSidePhase1(uint32_t rawId) const
Definition:
PixelROC.cc:195
sipixelobjects
Definition:
CablingPathToDetUnit.h:4
sipixelobjects::PixelROC::rawId
uint32_t rawId() const
return the DetUnit to which this ROC belongs to.
Definition:
PixelROC.h:34
LEDCalibrationChannels.depth
depth
Definition:
LEDCalibrationChannels.py:65
PixelPluginsPhase0_cfi.isBarrel
isBarrel
Definition:
PixelPluginsPhase0_cfi.py:17
sipixelobjects::PixelROC::initFrameConversionPhase1_CMSSW_9_0_X
void initFrameConversionPhase1_CMSSW_9_0_X()
Definition:
PixelROC.cc:56
PixelROC.h
sipixelobjects::FrameConversion
Definition:
FrameConversion.h:12
sipixelobjects::PixelROC::bpixLayerPhase1
static int bpixLayerPhase1(uint32_t rawId)
Definition:
PixelROC.cc:142
sipixelobjects::PixelROC::bpixSidePhase1
int bpixSidePhase1(uint32_t rawId) const
Definition:
PixelROC.cc:119
sipixelobjects::PixelROC::initFrameConversionPhase1
void initFrameConversionPhase1()
Definition:
PixelROC.cc:69
sipixelobjects::PixelROC::theIdLk
unsigned int theIdLk
Definition:
PixelROC.h:82
PixelModuleName::isBarrel
virtual bool isBarrel() const
true for barrel modules
Definition:
PixelModuleName.h:20
std
Definition:
JetResolutionObject.h:76
sipixelobjects::PixelROC::print
std::string print(int depth=0) const
printout for debug
Definition:
PixelROC.cc:231
sipixelobjects::PixelROC::fpixSidePhase0
int fpixSidePhase0(uint32_t rawId) const
Definition:
PixelROC.cc:163
DetId.h
sipixelobjects::PixelROC::theDetUnit
uint32_t theDetUnit
Definition:
PixelROC.h:81
sipixelobjects::PixelROC::initFrameConversion
void initFrameConversion()
Definition:
PixelROC.cc:84
MillePedeFileConverter_cfg.out
out
Definition:
MillePedeFileConverter_cfg.py:31
sipixelobjects::PixelROC::bpixSidePhase0
int bpixSidePhase0(uint32_t rawId) const
Definition:
PixelROC.cc:97
PixelEndcapName.h
Generated for CMSSW Reference Manual by
1.8.16