CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiPixelTrackResidualModule.cc
Go to the documentation of this file.
1 // Package: SiPixelMonitorTrack
2 // Class: SiPixelTrackResidualModule
3 //
4 // class SiPixelTrackResidualModule SiPixelTrackResidualModule.cc
5 // DQM/SiPixelMonitorTrack/src/SiPixelTrackResidualModule.cc
6 //
7 // Description: SiPixel hit-to-track residual data quality monitoring modules
8 // Implementation: prototype -> improved -> never final - end of the 1st step
9 //
10 // Original Author: Shan-Huei Chuang
11 // Created: Fri Mar 23 18:41:42 CET 2007
12 
13 
14 #include <string>
15 #include <iostream>
16 
23 
24 // Data Formats
31 
32 
33 using namespace std;
34 
35 
37  bBookTracks = true;
38 }
39 
40 
42  bBookTracks = true;
43 }
44 
45 
47 
48 }
49 
50 
51 void SiPixelTrackResidualModule::book(const edm::ParameterSet& iConfig, bool reducedSet, int type, bool isUpgrade) {
53 
54  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
55  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
56  bool isHalfModule = false;
57  if(barrel){
58  if (!isUpgrade) {
59  isHalfModule = PixelBarrelName(DetId(id_)).isHalfModule();
60  } else if (isUpgrade) {
61  isHalfModule = PixelBarrelNameUpgrade(DetId(id_)).isHalfModule();
62  }
63  }
64 
65  edm::InputTag src = iConfig.getParameter<edm::InputTag>("src");
66  std::string hisID;
67 
68  if(type==0){
69  SiPixelHistogramId* theHistogramId = new SiPixelHistogramId(src.label());
70  hisID = theHistogramId->setHistoId("residualX",id_);
71  meResidualX_ = dbe->book1D(hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
72  meResidualX_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
73  hisID = theHistogramId->setHistoId("residualY",id_);
74  meResidualY_ = dbe->book1D(hisID,"Hit-to-Track Residual in Z",100,-300,300);
75  meResidualY_->setAxisTitle("hit-to-track residual in z (um)",1);
76  // Number of clusters
77  hisID = theHistogramId->setHistoId("nclusters_OnTrack",id_);
78  meNClusters_onTrack_ = dbe->book1D(hisID,"Number of Clusters (on Track)",10,0.,10.);
79  meNClusters_onTrack_->setAxisTitle("Number of Clusters on Track",1);
80  // Total cluster charge in ke
81  hisID = theHistogramId->setHistoId("charge_OnTrack",id_);
82  meCharge_onTrack_ = dbe->book1D(hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
83  meCharge_onTrack_->setAxisTitle("Charge [kilo electrons]",1);
84  // Total cluster size (in pixels)
85  hisID = theHistogramId->setHistoId("size_OnTrack",id_);
86  meSize_onTrack_ = dbe->book1D(hisID,"Total cluster size (on Track)",30,0.,30.);
87  meSize_onTrack_->setAxisTitle("Cluster size [number of pixels]",1);
88  // Number of clusters
89  hisID = theHistogramId->setHistoId("nclusters_OffTrack",id_);
90  meNClusters_offTrack_ = dbe->book1D(hisID,"Number of Clusters (off Track)",35,0.,35.);
91  meNClusters_offTrack_->setAxisTitle("Number of Clusters off Track",1);
92  // Total cluster charge in ke
93  hisID = theHistogramId->setHistoId("charge_OffTrack",id_);
94  meCharge_offTrack_ = dbe->book1D(hisID,"Cluster charge (off Track)",100,0.,200.);
95  meCharge_offTrack_->setAxisTitle("Charge [kilo electrons]",1);
96  // Total cluster size (in pixels)
97  hisID = theHistogramId->setHistoId("size_OffTrack",id_);
98  meSize_offTrack_ = dbe->book1D(hisID,"Total cluster size (off Track)",30,0.,30.);
99  meSize_offTrack_->setAxisTitle("Cluster size [number of pixels]",1);
100  if(!reducedSet){
101  // Cluster width on the x-axis
102  hisID = theHistogramId->setHistoId("sizeX_OnTrack",id_);
103  meSizeX_onTrack_ = dbe->book1D(hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
104  meSizeX_onTrack_->setAxisTitle("Cluster x-size [rows]",1);
105  // Cluster width on the y-axis
106  hisID = theHistogramId->setHistoId("sizeY_OnTrack",id_);
107  meSizeY_onTrack_ = dbe->book1D(hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
108  meSizeY_onTrack_->setAxisTitle("Cluster y-size [columns]",1);
109  // Cluster width on the x-axis
110  hisID = theHistogramId->setHistoId("sizeX_OffTrack",id_);
111  meSizeX_offTrack_ = dbe->book1D(hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
112  meSizeX_offTrack_->setAxisTitle("Cluster x-size [rows]",1);
113  // Cluster width on the y-axis
114  hisID = theHistogramId->setHistoId("sizeY_OffTrack",id_);
115  meSizeY_offTrack_ = dbe->book1D(hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
116  meSizeY_offTrack_->setAxisTitle("Cluster y-size [columns]",1);
117  }
118  delete theHistogramId;
119  }
120 
121  if(type==1 && barrel){
122  uint32_t DBladder;
123  if (!isUpgrade) { DBladder = PixelBarrelName(DetId(id_)).ladderName(); }
124  else { DBladder = PixelBarrelNameUpgrade(DetId(id_)).ladderName(); }
125  char sladder[80]; sprintf(sladder,"Ladder_%02i",DBladder);
126  hisID = src.label() + "_" + sladder;
127  if(isHalfModule) hisID += "H";
128  else hisID += "F";
129  meResidualXLad_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
130  meResidualXLad_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
131  meResidualYLad_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
132  meResidualYLad_->setAxisTitle("hit-to-track residual in z (um)",1);
133  // Number of clusters
134  meNClusters_onTrackLad_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
135  meNClusters_onTrackLad_->setAxisTitle("Number of Clusters on Track",1);
136  // Total cluster charge in MeV
137  meCharge_onTrackLad_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
138  meCharge_onTrackLad_->setAxisTitle("Charge [kilo electrons]",1);
139  // Total cluster size (in pixels)
140  meSize_onTrackLad_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
141  meSize_onTrackLad_->setAxisTitle("Cluster size [number of pixels]",1);
142  // Number of clusters
143  meNClusters_offTrackLad_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
144  meNClusters_offTrackLad_->setAxisTitle("Number of Clusters off Track",1);
145  // Total cluster charge in MeV
146  meCharge_offTrackLad_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
147  meCharge_offTrackLad_->setAxisTitle("Charge [kilo electrons]",1);
148  // Total cluster size (in pixels)
149  meSize_offTrackLad_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
150  meSize_offTrackLad_->setAxisTitle("Cluster size [number of pixels]",1);
151  if(!reducedSet){
152  // Cluster width on the x-axis
153  meSizeX_offTrackLad_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
154  meSizeX_offTrackLad_->setAxisTitle("Cluster x-size [rows]",1);
155  // Cluster width on the y-axis
156  meSizeY_offTrackLad_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
157  meSizeY_offTrackLad_->setAxisTitle("Cluster y-size [columns]",1);
158  // Cluster width on the x-axis
159  meSizeX_onTrackLad_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
160  meSizeX_onTrackLad_->setAxisTitle("Cluster x-size [rows]",1);
161  // Cluster width on the y-axis
162  meSizeY_onTrackLad_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
163  meSizeY_onTrackLad_->setAxisTitle("Cluster y-size [columns]",1);
164  }
165  }
166 
167  if(type==2 && barrel){
168  uint32_t DBlayer;
169  if (!isUpgrade) { DBlayer = PixelBarrelName(DetId(id_)).layerName(); }
170  else { DBlayer = PixelBarrelNameUpgrade(DetId(id_)).layerName(); }
171  char slayer[80]; sprintf(slayer,"Layer_%i",DBlayer);
172  hisID = src.label() + "_" + slayer;
173  meResidualXLay_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
174  meResidualXLay_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
175  meResidualYLay_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
176  meResidualYLay_->setAxisTitle("hit-to-track residual in z (um)",1);
177  // Number of clusters
178  meNClusters_onTrackLay_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
179  meNClusters_onTrackLay_->setAxisTitle("Number of Clusters on Track",1);
180  // Total cluster charge in MeV
181  meCharge_onTrackLay_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
182  meCharge_onTrackLay_->setAxisTitle("Charge [kilo electrons]",1);
183  // Total cluster size (in pixels)
184  meSize_onTrackLay_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
185  meSize_onTrackLay_->setAxisTitle("Cluster size [number of pixels]",1);
186  // Number of clusters
187  meNClusters_offTrackLay_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
188  meNClusters_offTrackLay_->setAxisTitle("Number of Clusters off Track",1);
189  // Total cluster charge in MeV
190  meCharge_offTrackLay_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
191  meCharge_offTrackLay_->setAxisTitle("Charge [kilo electrons]",1);
192  // Total cluster size (in pixels)
193  meSize_offTrackLay_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
194  meSize_offTrackLay_->setAxisTitle("Cluster size [number of pixels]",1);
195  if(!reducedSet){
196  // Cluster width on the x-axis
197  meSizeX_onTrackLay_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
198  meSizeX_onTrackLay_->setAxisTitle("Cluster x-size [rows]",1);
199  // Cluster width on the y-axis
200  meSizeY_onTrackLay_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
201  meSizeY_onTrackLay_->setAxisTitle("Cluster y-size [columns]",1);
202  // Cluster width on the x-axis
203  meSizeX_offTrackLay_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
204  meSizeX_offTrackLay_->setAxisTitle("Cluster x-size [rows]",1);
205  // Cluster width on the y-axis
206  meSizeY_offTrackLay_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
207  meSizeY_offTrackLay_->setAxisTitle("Cluster y-size [columns]",1);
208  }
209  }
210 
211  if(type==3 && barrel){
212  uint32_t DBmodule;
213  if (!isUpgrade) { DBmodule = PixelBarrelName(DetId(id_)).moduleName(); }
214  else { DBmodule = PixelBarrelNameUpgrade(DetId(id_)).moduleName(); }
215  char smodule[80]; sprintf(smodule,"Ring_%i",DBmodule);
216  hisID = src.label() + "_" + smodule;
217  meResidualXPhi_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
218  meResidualXPhi_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
219  meResidualYPhi_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
220  meResidualYPhi_->setAxisTitle("hit-to-track residual in z (um)",1);
221  // Number of clusters
222  meNClusters_onTrackPhi_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
223  meNClusters_onTrackPhi_->setAxisTitle("Number of Clusters on Track",1);
224  // Total cluster charge in MeV
225  meCharge_onTrackPhi_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
226  meCharge_onTrackPhi_->setAxisTitle("Charge [kilo electrons]",1);
227  // Total cluster size (in pixels)
228  meSize_onTrackPhi_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
229  meSize_onTrackPhi_->setAxisTitle("Cluster size [number of pixels]",1);
230  // Number of clusters
231  meNClusters_offTrackPhi_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
232  meNClusters_offTrackPhi_->setAxisTitle("Number of Clusters off Track",1);
233  // Total cluster charge in MeV
234  meCharge_offTrackPhi_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
235  meCharge_offTrackPhi_->setAxisTitle("Charge [kilo electrons]",1);
236  // Total cluster size (in pixels)
237  meSize_offTrackPhi_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
238  meSize_offTrackPhi_->setAxisTitle("Cluster size [number of pixels]",1);
239  if(!reducedSet){
240  // Cluster width on the x-axis
241  meSizeX_onTrackPhi_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
242  meSizeX_onTrackPhi_->setAxisTitle("Cluster x-size [rows]",1);
243  // Cluster width on the y-axis
244  meSizeY_onTrackPhi_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
245  meSizeY_onTrackPhi_->setAxisTitle("Cluster y-size [columns]",1);
246  // Cluster width on the x-axis
247  meSizeX_offTrackPhi_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
248  meSizeX_offTrackPhi_->setAxisTitle("Cluster x-size [rows]",1);
249  // Cluster width on the y-axis
250  meSizeY_offTrackPhi_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
251  meSizeY_offTrackPhi_->setAxisTitle("Cluster y-size [columns]",1);
252  }
253  }
254 
255  if(type==4 && endcap){
256  uint32_t blade;
257  if (!isUpgrade) { blade= PixelEndcapName(DetId(id_)).bladeName(); }
258  else { blade= PixelEndcapNameUpgrade(DetId(id_)).bladeName(); }
259  char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
260  hisID = src.label() + "_" + sblade;
261  meResidualXBlade_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
262  meResidualXBlade_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
263  meResidualYBlade_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
264  meResidualYBlade_->setAxisTitle("hit-to-track residual in z (um)",1);
265  // Number of clusters
266  meNClusters_onTrackBlade_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
267  meNClusters_onTrackBlade_->setAxisTitle("Number of Clusters on Track",1);
268  // Total cluster charge in MeV
269  meCharge_onTrackBlade_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
270  meCharge_onTrackBlade_->setAxisTitle("Charge [kilo electrons]",1);
271  // Total cluster size (in pixels)
272  meSize_onTrackBlade_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
273  meSize_onTrackBlade_->setAxisTitle("Cluster size [number of pixels]",1);
274  // Number of clusters
275  meNClusters_offTrackBlade_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
276  meNClusters_offTrackBlade_->setAxisTitle("Number of Clusters off Track",1);
277  // Total cluster charge in MeV
278  meCharge_offTrackBlade_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
279  meCharge_offTrackBlade_->setAxisTitle("Charge [kilo electrons]",1);
280  // Total cluster size (in pixels)
281  meSize_offTrackBlade_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
282  meSize_offTrackBlade_->setAxisTitle("Cluster size [number of pixels]",1);
283  if(!reducedSet){
284  // Cluster width on the x-axis
285  meSizeX_onTrackBlade_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
286  meSizeX_onTrackBlade_->setAxisTitle("Cluster x-size [rows]",1);
287  // Cluster width on the y-axis
288  meSizeY_onTrackBlade_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
289  meSizeY_onTrackBlade_->setAxisTitle("Cluster y-size [columns]",1);
290  // Cluster width on the x-axis
291  meSizeX_offTrackBlade_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
292  meSizeX_offTrackBlade_->setAxisTitle("Cluster x-size [rows]",1);
293  // Cluster width on the y-axis
294  meSizeY_offTrackBlade_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
295  meSizeY_offTrackBlade_->setAxisTitle("Cluster y-size [columns]",1);
296  }
297  }
298 
299  if(type==5 && endcap){
300  uint32_t disk;
301  if (!isUpgrade) { disk = PixelEndcapName(DetId(id_)).diskName(); }
302  else { disk = PixelEndcapNameUpgrade(DetId(id_)).diskName(); }
303 
304  char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
305  hisID = src.label() + "_" + sdisk;
306  meResidualXDisk_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
307  meResidualXDisk_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
308  meResidualYDisk_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
309  meResidualYDisk_->setAxisTitle("hit-to-track residual in z (um)",1);
310  // Number of clusters
311  meNClusters_onTrackDisk_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
312  meNClusters_onTrackDisk_->setAxisTitle("Number of Clusters on Track",1);
313  // Total cluster charge in MeV
314  meCharge_onTrackDisk_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
315  meCharge_onTrackDisk_->setAxisTitle("Charge [kilo electrons]",1);
316  // Total cluster size (in pixels)
317  meSize_onTrackDisk_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
318  meSize_onTrackDisk_->setAxisTitle("Cluster size [number of pixels]",1);
319  // Number of clusters
320  meNClusters_offTrackDisk_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
321  meNClusters_offTrackDisk_->setAxisTitle("Number of Clusters off Track",1);
322  // Total cluster charge in MeV
323  meCharge_offTrackDisk_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
324  meCharge_offTrackDisk_->setAxisTitle("Charge [kilo electrons]",1);
325  // Total cluster size (in pixels)
326  meSize_offTrackDisk_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
327  meSize_offTrackDisk_->setAxisTitle("Cluster size [number of pixels]",1);
328  if(!reducedSet){
329  // Cluster width on the x-axis
330  meSizeX_onTrackDisk_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
331  meSizeX_onTrackDisk_->setAxisTitle("Cluster x-size [rows]",1);
332  // Cluster width on the y-axis
333  meSizeY_onTrackDisk_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
334  meSizeY_onTrackDisk_->setAxisTitle("Cluster y-size [columns]",1);
335  // Cluster width on the x-axis
336  meSizeX_offTrackDisk_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
337  meSizeX_offTrackDisk_->setAxisTitle("Cluster x-size [rows]",1);
338  // Cluster width on the y-axis
339  meSizeY_offTrackDisk_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
340  meSizeY_offTrackDisk_->setAxisTitle("Cluster y-size [columns]",1);
341  }
342  }
343 
344  if(type==6 && endcap){
345  uint32_t panel;
346  uint32_t module;
347  if (!isUpgrade) {
348  panel= PixelEndcapName(DetId(id_)).pannelName();
350  } else {
353  }
354 
355  char slab[80]; sprintf(slab, "Panel_%i_Ring_%i",panel, module);
356  hisID = src.label() + "_" + slab;
357  meResidualXRing_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
358  meResidualXRing_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
359  meResidualYRing_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
360  meResidualYRing_->setAxisTitle("hit-to-track residual in z (um)",1);
361  // Number of clusters
362  meNClusters_onTrackRing_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
363  meNClusters_onTrackRing_->setAxisTitle("Number of Clusters on Track",1);
364  // Total cluster charge in MeV
365  meCharge_onTrackRing_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
366  meCharge_onTrackRing_->setAxisTitle("Charge [kilo electrons]",1);
367  // Total cluster size (in pixels)
368  meSize_onTrackRing_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
369  meSize_onTrackRing_->setAxisTitle("Cluster size [number of pixels]",1);
370  // Number of clusters
371  meNClusters_offTrackRing_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
372  meNClusters_offTrackRing_->setAxisTitle("Number of Clusters off Track",1);
373  // Total cluster charge in MeV
374  meCharge_offTrackRing_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
375  meCharge_offTrackRing_->setAxisTitle("Charge [kilo electrons]",1);
376  // Total cluster size (in pixels)
377  meSize_offTrackRing_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
378  meSize_offTrackRing_->setAxisTitle("Cluster size [number of pixels]",1);
379  if(!reducedSet){
380  // Cluster width on the x-axis
381  meSizeX_onTrackRing_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
382  meSizeX_onTrackRing_->setAxisTitle("Cluster x-size [rows]",1);
383  // Cluster width on the y-axis
384  meSizeY_onTrackRing_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
385  meSizeY_onTrackRing_->setAxisTitle("Cluster y-size [columns]",1);
386  // Cluster width on the x-axis
387  meSizeX_offTrackRing_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
388  meSizeX_offTrackRing_->setAxisTitle("Cluster x-size [rows]",1);
389  // Cluster width on the y-axis
390  meSizeY_offTrackRing_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
391  meSizeY_offTrackRing_->setAxisTitle("Cluster y-size [columns]",1);
392  }
393  }
394 }
395 
396 
397 void SiPixelTrackResidualModule::fill(const Measurement2DVector& residual, bool reducedSet, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {
398 
399  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
400  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
401 
402  if(modon){
403  (meResidualX_)->Fill(residual.x());
404  (meResidualY_)->Fill(residual.y());
405  }
406 
407  if(ladon && barrel){
408  (meResidualXLad_)->Fill(residual.x());
409  (meResidualYLad_)->Fill(residual.y());
410  }
411 
412  if(layon && barrel){
413  (meResidualXLay_)->Fill(residual.x());
414  (meResidualYLay_)->Fill(residual.y());
415  }
416  if(phion && barrel){
417  (meResidualXPhi_)->Fill(residual.x());
418  (meResidualYPhi_)->Fill(residual.y());
419  }
420 
421  if(bladeon && endcap){
422  (meResidualXBlade_)->Fill(residual.x());
423  (meResidualYBlade_)->Fill(residual.y());
424  }
425 
426  if(diskon && endcap){
427  (meResidualXDisk_)->Fill(residual.x());
428  (meResidualYDisk_)->Fill(residual.y());
429  }
430 
431  if(ringon && endcap){
432  (meResidualXRing_)->Fill(residual.x());
433  (meResidualYRing_)->Fill(residual.y());
434  }
435 }
436 
437 
438 void SiPixelTrackResidualModule::fill(const SiPixelCluster &clust, bool onTrack, double corrCharge, bool reducedSet, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon){
439 
440  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
441  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
442 
443  float charge = 0.001*(clust.charge()); // total charge of cluster
444  if(onTrack) charge = corrCharge; // corrected cluster charge
445  int size = clust.size(); // total size of cluster (in pixels)
446  int sizeX = clust.sizeX(); // size of cluster in x-clustrection
447  int sizeY = clust.sizeY(); // size of cluster in y-direction
448 
449  if(onTrack){
450  if(modon){
451  (meCharge_onTrack_)->Fill((float)charge);
452  (meSize_onTrack_)->Fill((int)size);
453  if(!reducedSet){
454  (meSizeX_onTrack_)->Fill((int)sizeX);
455  (meSizeY_onTrack_)->Fill((int)sizeY);
456  }
457  }
458  if(barrel && ladon){
459  (meCharge_onTrackLad_)->Fill((float)charge);
460  (meSize_onTrackLad_)->Fill((int)size);
461  if(!reducedSet){
462  (meSizeX_onTrackLad_)->Fill((int)sizeX);
463  (meSizeY_onTrackLad_)->Fill((int)sizeY);
464  }
465  }
466  if(barrel && layon){
467  (meCharge_onTrackLay_)->Fill((float)charge);
468  (meSize_onTrackLay_)->Fill((int)size);
469  if(!reducedSet){
470  (meSizeX_onTrackLay_)->Fill((int)sizeX);
471  (meSizeY_onTrackLay_)->Fill((int)sizeY);
472  }
473  }
474  if(barrel && phion){
475  (meCharge_onTrackPhi_)->Fill((float)charge);
476  (meSize_onTrackPhi_)->Fill((int)size);
477  if(!reducedSet){
478  (meSizeX_onTrackPhi_)->Fill((int)sizeX);
479  (meSizeY_onTrackPhi_)->Fill((int)sizeY);
480  }
481  }
482  if(endcap && bladeon){
484  (meSize_onTrackBlade_)->Fill((int)size);
485  if(!reducedSet){
486  (meSizeX_onTrackBlade_)->Fill((int)sizeX);
487  (meSizeY_onTrackBlade_)->Fill((int)sizeY);
488  }
489  }
490  if(endcap && diskon){
491  (meCharge_onTrackDisk_)->Fill((float)charge);
492  (meSize_onTrackDisk_)->Fill((int)size);
493  if(!reducedSet){
494  (meSizeX_onTrackDisk_)->Fill((int)sizeX);
495  (meSizeY_onTrackDisk_)->Fill((int)sizeY);
496  }
497  }
498  if(endcap && ringon){
499  (meCharge_onTrackRing_)->Fill((float)charge);
500  (meSize_onTrackRing_)->Fill((int)size);
501  if(!reducedSet){
502  (meSizeX_onTrackRing_)->Fill((int)sizeX);
503  (meSizeY_onTrackRing_)->Fill((int)sizeY);
504  }
505  }
506  }
507 
508  if(!onTrack){
509  if(modon){
510  (meCharge_offTrack_)->Fill((float)charge);
511  (meSize_offTrack_)->Fill((int)size);
512  if(!reducedSet){
513  (meSizeX_offTrack_)->Fill((int)sizeX);
514  (meSizeY_offTrack_)->Fill((int)sizeY);
515  }
516  }
517  if(barrel && ladon){
518  (meCharge_offTrackLad_)->Fill((float)charge);
519  (meSize_offTrackLad_)->Fill((int)size);
520  if(!reducedSet){
521  (meSizeX_offTrackLad_)->Fill((int)sizeX);
522  (meSizeY_offTrackLad_)->Fill((int)sizeY);
523  }
524  }
525  if(barrel && layon){
526  (meCharge_offTrackLay_)->Fill((float)charge);
527  (meSize_offTrackLay_)->Fill((int)size);
528  if(!reducedSet){
529  (meSizeX_offTrackLay_)->Fill((int)sizeX);
530  (meSizeY_offTrackLay_)->Fill((int)sizeY);
531  }
532  }
533  if(barrel && phion){
534  (meCharge_offTrackPhi_)->Fill((float)charge);
535  (meSize_offTrackPhi_)->Fill((int)size);
536  if(!reducedSet){
537  (meSizeX_offTrackPhi_)->Fill((int)sizeX);
538  (meSizeY_offTrackPhi_)->Fill((int)sizeY);
539  }
540  }
541  if(endcap && bladeon){
544  if(!reducedSet){
545  (meSizeX_offTrackBlade_)->Fill((int)sizeX);
546  (meSizeY_offTrackBlade_)->Fill((int)sizeY);
547  }
548  }
549  if(endcap && diskon){
551  (meSize_offTrackDisk_)->Fill((int)size);
552  if(!reducedSet){
553  (meSizeX_offTrackDisk_)->Fill((int)sizeX);
554  (meSizeY_offTrackDisk_)->Fill((int)sizeY);
555  }
556  }
557  if(endcap && ringon){
559  (meSize_offTrackRing_)->Fill((int)size);
560  if(!reducedSet){
561  (meSizeX_offTrackRing_)->Fill((int)sizeX);
562  (meSizeY_offTrackRing_)->Fill((int)sizeY);
563  }
564  }
565  }
566 
567 
568 
569 }
570 
571 void SiPixelTrackResidualModule::nfill(int onTrack, int offTrack, bool reducedSet, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon){
572 
573  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
574  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
575  bool fillOn = false; if(onTrack>0) fillOn = true;
576  bool fillOff = false; if(offTrack>0) fillOff = true;
577 
578  if(modon){
579  if(fillOn) meNClusters_onTrack_->Fill(onTrack);
580  if(fillOff) meNClusters_offTrack_->Fill(offTrack);
581  }
582  if(ladon && barrel){
583  if(fillOn) meNClusters_onTrackLad_->Fill(onTrack);
584  if(fillOff) meNClusters_offTrackLad_->Fill(offTrack);
585  }
586 
587  if(layon && barrel){
588  if(fillOn) meNClusters_onTrackLay_->Fill(onTrack);
589  if(fillOff) meNClusters_offTrackLay_->Fill(offTrack);
590  }
591  if(phion && barrel){
592  if(fillOn) meNClusters_onTrackPhi_->Fill(onTrack);
593  if(fillOff) meNClusters_offTrackPhi_->Fill(offTrack);
594  }
595  if(bladeon && endcap){
596  if(fillOn) meNClusters_onTrackBlade_->Fill(onTrack);
597  if(fillOff) meNClusters_offTrackBlade_->Fill(offTrack);
598  }
599  if(diskon && endcap){
600  if(fillOn) meNClusters_onTrackDisk_->Fill(onTrack);
601  if(fillOff) meNClusters_offTrackDisk_->Fill(offTrack);
602  }
603  if(ringon && endcap){
604  if(fillOn) meNClusters_onTrackRing_->Fill(onTrack);
605  if(fillOff) meNClusters_offTrackRing_->Fill(offTrack);
606  }
607 }
int plaquetteName() const
plaquetteId (in pannel)
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
float charge() const
T y() const
Definition: PV2DBase.h:46
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:928
int moduleName() const
module id (index in z)
bool isHalfModule() const
full or half module
int plaquetteName() const
plaquetteId (in pannel)
double charge(const std::vector< uint8_t > &Ampls)
void Fill(long long x)
int bladeName() const
blade id
void nfill(int onTrack, int offTrack, bool reducedSet, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon)
bool isHalfModule() const
full or half module
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
int bladeName() const
blade id
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
int diskName() const
disk id
void fill(const Measurement2DVector &, bool reducedSet=true, bool modon=true, bool ladon=true, bool layon=true, bool phion=true, bool bladeon=true, bool diskon=true, bool ringon=true)
std::string setHistoId(std::string variable, uint32_t &rawId)
Set Histogram Id.
Definition: DetId.h:18
int ladderName() const
ladder id (index in phi)
void book(const edm::ParameterSet &, bool reducedSet=true, int type=0, bool isUpgrade=false)
int ladderName() const
ladder id (index in phi)
int moduleName() const
module id (index in z)
int layerName() const
layer id
std::string const & label() const
Definition: InputTag.h:42
int sizeY() const
Pixel cluster – collection of neighboring pixels above threshold.
int pannelName() const
pannel id
int diskName() const
disk id
T x() const
Definition: PV2DBase.h:45
int sizeX() const
int pannelName() const
pannel id
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
int layerName() const
layer id
tuple size
Write out results.
int size() const