00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <string>
00016 #include <iostream>
00017
00018 #include "DQMServices/Core/interface/DQMStore.h"
00019 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00020 #include "FWCore/ServiceRegistry/interface/Service.h"
00021 #include "FWCore/Utilities/interface/InputTag.h"
00022 #include "DQM/SiPixelCommon/interface/SiPixelHistogramId.h"
00023 #include "DQM/SiPixelMonitorTrack/interface/SiPixelTrackResidualModule.h"
00024
00025
00026 #include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h"
00027 #include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h"
00028 #include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h"
00029 #include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h"
00030 #include "DataFormats/DetId/interface/DetId.h"
00031 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00032
00033
00034 using namespace std;
00035
00036
00037 SiPixelTrackResidualModule::SiPixelTrackResidualModule() : id_(0) {
00038 bBookTracks = true;
00039 }
00040
00041
00042 SiPixelTrackResidualModule::SiPixelTrackResidualModule(uint32_t id) : id_(id) {
00043 bBookTracks = true;
00044 }
00045
00046
00047 SiPixelTrackResidualModule::~SiPixelTrackResidualModule() {
00048
00049 }
00050
00051
00052 void SiPixelTrackResidualModule::book(const edm::ParameterSet& iConfig, bool reducedSet, int type, bool isUpgrade) {
00053 DQMStore* dbe = edm::Service<DQMStore>().operator->();
00054
00055 bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00056 bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00057 bool isHalfModule = false;
00058 if(barrel){
00059 if (!isUpgrade) {
00060 isHalfModule = PixelBarrelName(DetId(id_)).isHalfModule();
00061 } else if (isUpgrade) {
00062 isHalfModule = PixelBarrelNameUpgrade(DetId(id_)).isHalfModule();
00063 }
00064 }
00065
00066 edm::InputTag src = iConfig.getParameter<edm::InputTag>("src");
00067 std::string hisID;
00068
00069 if(type==0){
00070 SiPixelHistogramId* theHistogramId = new SiPixelHistogramId(src.label());
00071 hisID = theHistogramId->setHistoId("residualX",id_);
00072 meResidualX_ = dbe->book1D(hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00073 meResidualX_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00074 hisID = theHistogramId->setHistoId("residualY",id_);
00075 meResidualY_ = dbe->book1D(hisID,"Hit-to-Track Residual in Z",100,-300,300);
00076 meResidualY_->setAxisTitle("hit-to-track residual in z (um)",1);
00077
00078 hisID = theHistogramId->setHistoId("nclusters_OnTrack",id_);
00079 meNClusters_onTrack_ = dbe->book1D(hisID,"Number of Clusters (on Track)",10,0.,10.);
00080 meNClusters_onTrack_->setAxisTitle("Number of Clusters on Track",1);
00081
00082 hisID = theHistogramId->setHistoId("charge_OnTrack",id_);
00083 meCharge_onTrack_ = dbe->book1D(hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00084 meCharge_onTrack_->setAxisTitle("Charge [kilo electrons]",1);
00085
00086 hisID = theHistogramId->setHistoId("size_OnTrack",id_);
00087 meSize_onTrack_ = dbe->book1D(hisID,"Total cluster size (on Track)",30,0.,30.);
00088 meSize_onTrack_->setAxisTitle("Cluster size [number of pixels]",1);
00089
00090 hisID = theHistogramId->setHistoId("nclusters_OffTrack",id_);
00091 meNClusters_offTrack_ = dbe->book1D(hisID,"Number of Clusters (off Track)",35,0.,35.);
00092 meNClusters_offTrack_->setAxisTitle("Number of Clusters off Track",1);
00093
00094 hisID = theHistogramId->setHistoId("charge_OffTrack",id_);
00095 meCharge_offTrack_ = dbe->book1D(hisID,"Cluster charge (off Track)",100,0.,200.);
00096 meCharge_offTrack_->setAxisTitle("Charge [kilo electrons]",1);
00097
00098 hisID = theHistogramId->setHistoId("size_OffTrack",id_);
00099 meSize_offTrack_ = dbe->book1D(hisID,"Total cluster size (off Track)",30,0.,30.);
00100 meSize_offTrack_->setAxisTitle("Cluster size [number of pixels]",1);
00101 if(!reducedSet){
00102
00103 hisID = theHistogramId->setHistoId("sizeX_OnTrack",id_);
00104 meSizeX_onTrack_ = dbe->book1D(hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00105 meSizeX_onTrack_->setAxisTitle("Cluster x-size [rows]",1);
00106
00107 hisID = theHistogramId->setHistoId("sizeY_OnTrack",id_);
00108 meSizeY_onTrack_ = dbe->book1D(hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00109 meSizeY_onTrack_->setAxisTitle("Cluster y-size [columns]",1);
00110
00111 hisID = theHistogramId->setHistoId("sizeX_OffTrack",id_);
00112 meSizeX_offTrack_ = dbe->book1D(hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00113 meSizeX_offTrack_->setAxisTitle("Cluster x-size [rows]",1);
00114
00115 hisID = theHistogramId->setHistoId("sizeY_OffTrack",id_);
00116 meSizeY_offTrack_ = dbe->book1D(hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00117 meSizeY_offTrack_->setAxisTitle("Cluster y-size [columns]",1);
00118 }
00119 delete theHistogramId;
00120 }
00121
00122 if(type==1 && barrel){
00123 uint32_t DBladder;
00124 if (!isUpgrade) { DBladder = PixelBarrelName(DetId(id_)).ladderName(); }
00125 else if (isUpgrade) { DBladder = PixelBarrelNameUpgrade(DetId(id_)).ladderName(); }
00126 char sladder[80]; sprintf(sladder,"Ladder_%02i",DBladder);
00127 hisID = src.label() + "_" + sladder;
00128 if(isHalfModule) hisID += "H";
00129 else hisID += "F";
00130 meResidualXLad_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00131 meResidualXLad_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00132 meResidualYLad_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
00133 meResidualYLad_->setAxisTitle("hit-to-track residual in z (um)",1);
00134
00135 meNClusters_onTrackLad_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
00136 meNClusters_onTrackLad_->setAxisTitle("Number of Clusters on Track",1);
00137
00138 meCharge_onTrackLad_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00139 meCharge_onTrackLad_->setAxisTitle("Charge [kilo electrons]",1);
00140
00141 meSize_onTrackLad_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
00142 meSize_onTrackLad_->setAxisTitle("Cluster size [number of pixels]",1);
00143
00144 meNClusters_offTrackLad_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
00145 meNClusters_offTrackLad_->setAxisTitle("Number of Clusters off Track",1);
00146
00147 meCharge_offTrackLad_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
00148 meCharge_offTrackLad_->setAxisTitle("Charge [kilo electrons]",1);
00149
00150 meSize_offTrackLad_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
00151 meSize_offTrackLad_->setAxisTitle("Cluster size [number of pixels]",1);
00152 if(!reducedSet){
00153
00154 meSizeX_offTrackLad_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00155 meSizeX_offTrackLad_->setAxisTitle("Cluster x-size [rows]",1);
00156
00157 meSizeY_offTrackLad_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00158 meSizeY_offTrackLad_->setAxisTitle("Cluster y-size [columns]",1);
00159
00160 meSizeX_onTrackLad_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00161 meSizeX_onTrackLad_->setAxisTitle("Cluster x-size [rows]",1);
00162
00163 meSizeY_onTrackLad_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00164 meSizeY_onTrackLad_->setAxisTitle("Cluster y-size [columns]",1);
00165 }
00166 }
00167
00168 if(type==2 && barrel){
00169 uint32_t DBlayer;
00170 if (!isUpgrade) { DBlayer = PixelBarrelName(DetId(id_)).layerName(); }
00171 else if (isUpgrade) { DBlayer = PixelBarrelNameUpgrade(DetId(id_)).layerName(); }
00172 char slayer[80]; sprintf(slayer,"Layer_%i",DBlayer);
00173 hisID = src.label() + "_" + slayer;
00174 meResidualXLay_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00175 meResidualXLay_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00176 meResidualYLay_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
00177 meResidualYLay_->setAxisTitle("hit-to-track residual in z (um)",1);
00178
00179 meNClusters_onTrackLay_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
00180 meNClusters_onTrackLay_->setAxisTitle("Number of Clusters on Track",1);
00181
00182 meCharge_onTrackLay_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00183 meCharge_onTrackLay_->setAxisTitle("Charge [kilo electrons]",1);
00184
00185 meSize_onTrackLay_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
00186 meSize_onTrackLay_->setAxisTitle("Cluster size [number of pixels]",1);
00187
00188 meNClusters_offTrackLay_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
00189 meNClusters_offTrackLay_->setAxisTitle("Number of Clusters off Track",1);
00190
00191 meCharge_offTrackLay_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
00192 meCharge_offTrackLay_->setAxisTitle("Charge [kilo electrons]",1);
00193
00194 meSize_offTrackLay_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
00195 meSize_offTrackLay_->setAxisTitle("Cluster size [number of pixels]",1);
00196 if(!reducedSet){
00197
00198 meSizeX_onTrackLay_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00199 meSizeX_onTrackLay_->setAxisTitle("Cluster x-size [rows]",1);
00200
00201 meSizeY_onTrackLay_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00202 meSizeY_onTrackLay_->setAxisTitle("Cluster y-size [columns]",1);
00203
00204 meSizeX_offTrackLay_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00205 meSizeX_offTrackLay_->setAxisTitle("Cluster x-size [rows]",1);
00206
00207 meSizeY_offTrackLay_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00208 meSizeY_offTrackLay_->setAxisTitle("Cluster y-size [columns]",1);
00209 }
00210 }
00211
00212 if(type==3 && barrel){
00213 uint32_t DBmodule;
00214 if (!isUpgrade) { DBmodule = PixelBarrelName(DetId(id_)).moduleName(); }
00215 else if (isUpgrade) { DBmodule = PixelBarrelNameUpgrade(DetId(id_)).moduleName(); }
00216 char smodule[80]; sprintf(smodule,"Ring_%i",DBmodule);
00217 hisID = src.label() + "_" + smodule;
00218 meResidualXPhi_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00219 meResidualXPhi_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00220 meResidualYPhi_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
00221 meResidualYPhi_->setAxisTitle("hit-to-track residual in z (um)",1);
00222
00223 meNClusters_onTrackPhi_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
00224 meNClusters_onTrackPhi_->setAxisTitle("Number of Clusters on Track",1);
00225
00226 meCharge_onTrackPhi_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00227 meCharge_onTrackPhi_->setAxisTitle("Charge [kilo electrons]",1);
00228
00229 meSize_onTrackPhi_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
00230 meSize_onTrackPhi_->setAxisTitle("Cluster size [number of pixels]",1);
00231
00232 meNClusters_offTrackPhi_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
00233 meNClusters_offTrackPhi_->setAxisTitle("Number of Clusters off Track",1);
00234
00235 meCharge_offTrackPhi_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
00236 meCharge_offTrackPhi_->setAxisTitle("Charge [kilo electrons]",1);
00237
00238 meSize_offTrackPhi_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
00239 meSize_offTrackPhi_->setAxisTitle("Cluster size [number of pixels]",1);
00240 if(!reducedSet){
00241
00242 meSizeX_onTrackPhi_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00243 meSizeX_onTrackPhi_->setAxisTitle("Cluster x-size [rows]",1);
00244
00245 meSizeY_onTrackPhi_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00246 meSizeY_onTrackPhi_->setAxisTitle("Cluster y-size [columns]",1);
00247
00248 meSizeX_offTrackPhi_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00249 meSizeX_offTrackPhi_->setAxisTitle("Cluster x-size [rows]",1);
00250
00251 meSizeY_offTrackPhi_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00252 meSizeY_offTrackPhi_->setAxisTitle("Cluster y-size [columns]",1);
00253 }
00254 }
00255
00256 if(type==4 && endcap){
00257 uint32_t blade;
00258 if (!isUpgrade) { blade= PixelEndcapName(DetId(id_)).bladeName(); }
00259 else if (isUpgrade) { blade= PixelEndcapNameUpgrade(DetId(id_)).bladeName(); }
00260 char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
00261 hisID = src.label() + "_" + sblade;
00262 meResidualXBlade_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00263 meResidualXBlade_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00264 meResidualYBlade_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
00265 meResidualYBlade_->setAxisTitle("hit-to-track residual in z (um)",1);
00266
00267 meNClusters_onTrackBlade_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
00268 meNClusters_onTrackBlade_->setAxisTitle("Number of Clusters on Track",1);
00269
00270 meCharge_onTrackBlade_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00271 meCharge_onTrackBlade_->setAxisTitle("Charge [kilo electrons]",1);
00272
00273 meSize_onTrackBlade_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
00274 meSize_onTrackBlade_->setAxisTitle("Cluster size [number of pixels]",1);
00275
00276 meNClusters_offTrackBlade_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
00277 meNClusters_offTrackBlade_->setAxisTitle("Number of Clusters off Track",1);
00278
00279 meCharge_offTrackBlade_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
00280 meCharge_offTrackBlade_->setAxisTitle("Charge [kilo electrons]",1);
00281
00282 meSize_offTrackBlade_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
00283 meSize_offTrackBlade_->setAxisTitle("Cluster size [number of pixels]",1);
00284 if(!reducedSet){
00285
00286 meSizeX_onTrackBlade_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00287 meSizeX_onTrackBlade_->setAxisTitle("Cluster x-size [rows]",1);
00288
00289 meSizeY_onTrackBlade_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00290 meSizeY_onTrackBlade_->setAxisTitle("Cluster y-size [columns]",1);
00291
00292 meSizeX_offTrackBlade_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00293 meSizeX_offTrackBlade_->setAxisTitle("Cluster x-size [rows]",1);
00294
00295 meSizeY_offTrackBlade_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00296 meSizeY_offTrackBlade_->setAxisTitle("Cluster y-size [columns]",1);
00297 }
00298 }
00299
00300 if(type==5 && endcap){
00301 uint32_t disk;
00302 if (!isUpgrade) { disk = PixelEndcapName(DetId(id_)).diskName(); }
00303 else if (isUpgrade) { disk = PixelEndcapNameUpgrade(DetId(id_)).diskName(); }
00304
00305 char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
00306 hisID = src.label() + "_" + sdisk;
00307 meResidualXDisk_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00308 meResidualXDisk_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00309 meResidualYDisk_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
00310 meResidualYDisk_->setAxisTitle("hit-to-track residual in z (um)",1);
00311
00312 meNClusters_onTrackDisk_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
00313 meNClusters_onTrackDisk_->setAxisTitle("Number of Clusters on Track",1);
00314
00315 meCharge_onTrackDisk_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00316 meCharge_onTrackDisk_->setAxisTitle("Charge [kilo electrons]",1);
00317
00318 meSize_onTrackDisk_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
00319 meSize_onTrackDisk_->setAxisTitle("Cluster size [number of pixels]",1);
00320
00321 meNClusters_offTrackDisk_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
00322 meNClusters_offTrackDisk_->setAxisTitle("Number of Clusters off Track",1);
00323
00324 meCharge_offTrackDisk_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
00325 meCharge_offTrackDisk_->setAxisTitle("Charge [kilo electrons]",1);
00326
00327 meSize_offTrackDisk_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
00328 meSize_offTrackDisk_->setAxisTitle("Cluster size [number of pixels]",1);
00329 if(!reducedSet){
00330
00331 meSizeX_onTrackDisk_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00332 meSizeX_onTrackDisk_->setAxisTitle("Cluster x-size [rows]",1);
00333
00334 meSizeY_onTrackDisk_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00335 meSizeY_onTrackDisk_->setAxisTitle("Cluster y-size [columns]",1);
00336
00337 meSizeX_offTrackDisk_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00338 meSizeX_offTrackDisk_->setAxisTitle("Cluster x-size [rows]",1);
00339
00340 meSizeY_offTrackDisk_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00341 meSizeY_offTrackDisk_->setAxisTitle("Cluster y-size [columns]",1);
00342 }
00343 }
00344
00345 if(type==6 && endcap){
00346 uint32_t panel;
00347 uint32_t module;
00348 if (!isUpgrade) {
00349 panel= PixelEndcapName(DetId(id_)).pannelName();
00350 module= PixelEndcapName(DetId(id_)).plaquetteName();
00351 } else if (isUpgrade) {
00352 panel= PixelEndcapNameUpgrade(DetId(id_)).pannelName();
00353 module= PixelEndcapNameUpgrade(DetId(id_)).plaquetteName();
00354 }
00355
00356 char slab[80]; sprintf(slab, "Panel_%i_Ring_%i",panel, module);
00357 hisID = src.label() + "_" + slab;
00358 meResidualXRing_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in r-phi",100,-150,150);
00359 meResidualXRing_->setAxisTitle("hit-to-track residual in r-phi (um)",1);
00360 meResidualYRing_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Z",100,-300,300);
00361 meResidualYRing_->setAxisTitle("hit-to-track residual in z (um)",1);
00362
00363 meNClusters_onTrackRing_ = dbe->book1D("nclusters_OnTrack_" + hisID,"Number of Clusters (on Track)",10,0.,10.);
00364 meNClusters_onTrackRing_->setAxisTitle("Number of Clusters on Track",1);
00365
00366 meCharge_onTrackRing_ = dbe->book1D("charge_OnTrack_" + hisID,"Normalized Cluster charge (on Track)",100,0.,200.);
00367 meCharge_onTrackRing_->setAxisTitle("Charge [kilo electrons]",1);
00368
00369 meSize_onTrackRing_ = dbe->book1D("size_OnTrack_" + hisID,"Total cluster size (on Track)",30,0.,30.);
00370 meSize_onTrackRing_->setAxisTitle("Cluster size [number of pixels]",1);
00371
00372 meNClusters_offTrackRing_ = dbe->book1D("nclusters_OffTrack_" + hisID,"Number of Clusters (off Track)",35,0.,35.);
00373 meNClusters_offTrackRing_->setAxisTitle("Number of Clusters off Track",1);
00374
00375 meCharge_offTrackRing_ = dbe->book1D("charge_OffTrack_" + hisID,"Cluster charge (off Track)",100,0.,200.);
00376 meCharge_offTrackRing_->setAxisTitle("Charge [kilo electrons]",1);
00377
00378 meSize_offTrackRing_ = dbe->book1D("size_OffTrack_" + hisID,"Total cluster size (off Track)",30,0.,30.);
00379 meSize_offTrackRing_->setAxisTitle("Cluster size [number of pixels]",1);
00380 if(!reducedSet){
00381
00382 meSizeX_onTrackRing_ = dbe->book1D("sizeX_OnTrack_" + hisID,"Cluster x-width (rows) (on Track)",10,0.,10.);
00383 meSizeX_onTrackRing_->setAxisTitle("Cluster x-size [rows]",1);
00384
00385 meSizeY_onTrackRing_ = dbe->book1D("sizeY_OnTrack_" + hisID,"Cluster y-width (columns) (on Track)",15,0.,15.);
00386 meSizeY_onTrackRing_->setAxisTitle("Cluster y-size [columns]",1);
00387
00388 meSizeX_offTrackRing_ = dbe->book1D("sizeX_OffTrack_" + hisID,"Cluster x-width (rows) (off Track)",10,0.,10.);
00389 meSizeX_offTrackRing_->setAxisTitle("Cluster x-size [rows]",1);
00390
00391 meSizeY_offTrackRing_ = dbe->book1D("sizeY_OffTrack_" + hisID,"Cluster y-width (columns) (off Track)",15,0.,15.);
00392 meSizeY_offTrackRing_->setAxisTitle("Cluster y-size [columns]",1);
00393 }
00394 }
00395 }
00396
00397
00398 void SiPixelTrackResidualModule::fill(const Measurement2DVector& residual, bool reducedSet, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {
00399
00400 bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00401 bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00402
00403 if(modon){
00404 (meResidualX_)->Fill(residual.x());
00405 (meResidualY_)->Fill(residual.y());
00406 }
00407
00408 if(ladon && barrel){
00409 (meResidualXLad_)->Fill(residual.x());
00410 (meResidualYLad_)->Fill(residual.y());
00411 }
00412
00413 if(layon && barrel){
00414 (meResidualXLay_)->Fill(residual.x());
00415 (meResidualYLay_)->Fill(residual.y());
00416 }
00417 if(phion && barrel){
00418 (meResidualXPhi_)->Fill(residual.x());
00419 (meResidualYPhi_)->Fill(residual.y());
00420 }
00421
00422 if(bladeon && endcap){
00423 (meResidualXBlade_)->Fill(residual.x());
00424 (meResidualYBlade_)->Fill(residual.y());
00425 }
00426
00427 if(diskon && endcap){
00428 (meResidualXDisk_)->Fill(residual.x());
00429 (meResidualYDisk_)->Fill(residual.y());
00430 }
00431
00432 if(ringon && endcap){
00433 (meResidualXRing_)->Fill(residual.x());
00434 (meResidualYRing_)->Fill(residual.y());
00435 }
00436 }
00437
00438
00439 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){
00440
00441 bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00442 bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00443
00444 float charge = 0.001*(clust.charge());
00445 if(onTrack) charge = corrCharge;
00446 int size = clust.size();
00447 int sizeX = clust.sizeX();
00448 int sizeY = clust.sizeY();
00449
00450 if(onTrack){
00451 if(modon){
00452 (meCharge_onTrack_)->Fill((float)charge);
00453 (meSize_onTrack_)->Fill((int)size);
00454 if(!reducedSet){
00455 (meSizeX_onTrack_)->Fill((int)sizeX);
00456 (meSizeY_onTrack_)->Fill((int)sizeY);
00457 }
00458 }
00459 if(barrel && ladon){
00460 (meCharge_onTrackLad_)->Fill((float)charge);
00461 (meSize_onTrackLad_)->Fill((int)size);
00462 if(!reducedSet){
00463 (meSizeX_onTrackLad_)->Fill((int)sizeX);
00464 (meSizeY_onTrackLad_)->Fill((int)sizeY);
00465 }
00466 }
00467 if(barrel && layon){
00468 (meCharge_onTrackLay_)->Fill((float)charge);
00469 (meSize_onTrackLay_)->Fill((int)size);
00470 if(!reducedSet){
00471 (meSizeX_onTrackLay_)->Fill((int)sizeX);
00472 (meSizeY_onTrackLay_)->Fill((int)sizeY);
00473 }
00474 }
00475 if(barrel && phion){
00476 (meCharge_onTrackPhi_)->Fill((float)charge);
00477 (meSize_onTrackPhi_)->Fill((int)size);
00478 if(!reducedSet){
00479 (meSizeX_onTrackPhi_)->Fill((int)sizeX);
00480 (meSizeY_onTrackPhi_)->Fill((int)sizeY);
00481 }
00482 }
00483 if(endcap && bladeon){
00484 (meCharge_onTrackBlade_)->Fill((float)charge);
00485 (meSize_onTrackBlade_)->Fill((int)size);
00486 if(!reducedSet){
00487 (meSizeX_onTrackBlade_)->Fill((int)sizeX);
00488 (meSizeY_onTrackBlade_)->Fill((int)sizeY);
00489 }
00490 }
00491 if(endcap && diskon){
00492 (meCharge_onTrackDisk_)->Fill((float)charge);
00493 (meSize_onTrackDisk_)->Fill((int)size);
00494 if(!reducedSet){
00495 (meSizeX_onTrackDisk_)->Fill((int)sizeX);
00496 (meSizeY_onTrackDisk_)->Fill((int)sizeY);
00497 }
00498 }
00499 if(endcap && ringon){
00500 (meCharge_onTrackRing_)->Fill((float)charge);
00501 (meSize_onTrackRing_)->Fill((int)size);
00502 if(!reducedSet){
00503 (meSizeX_onTrackRing_)->Fill((int)sizeX);
00504 (meSizeY_onTrackRing_)->Fill((int)sizeY);
00505 }
00506 }
00507 }
00508
00509 if(!onTrack){
00510 if(modon){
00511 (meCharge_offTrack_)->Fill((float)charge);
00512 (meSize_offTrack_)->Fill((int)size);
00513 if(!reducedSet){
00514 (meSizeX_offTrack_)->Fill((int)sizeX);
00515 (meSizeY_offTrack_)->Fill((int)sizeY);
00516 }
00517 }
00518 if(barrel && ladon){
00519 (meCharge_offTrackLad_)->Fill((float)charge);
00520 (meSize_offTrackLad_)->Fill((int)size);
00521 if(!reducedSet){
00522 (meSizeX_offTrackLad_)->Fill((int)sizeX);
00523 (meSizeY_offTrackLad_)->Fill((int)sizeY);
00524 }
00525 }
00526 if(barrel && layon){
00527 (meCharge_offTrackLay_)->Fill((float)charge);
00528 (meSize_offTrackLay_)->Fill((int)size);
00529 if(!reducedSet){
00530 (meSizeX_offTrackLay_)->Fill((int)sizeX);
00531 (meSizeY_offTrackLay_)->Fill((int)sizeY);
00532 }
00533 }
00534 if(barrel && phion){
00535 (meCharge_offTrackPhi_)->Fill((float)charge);
00536 (meSize_offTrackPhi_)->Fill((int)size);
00537 if(!reducedSet){
00538 (meSizeX_offTrackPhi_)->Fill((int)sizeX);
00539 (meSizeY_offTrackPhi_)->Fill((int)sizeY);
00540 }
00541 }
00542 if(endcap && bladeon){
00543 (meCharge_offTrackBlade_)->Fill((float)charge);
00544 (meSize_offTrackBlade_)->Fill((int)size);
00545 if(!reducedSet){
00546 (meSizeX_offTrackBlade_)->Fill((int)sizeX);
00547 (meSizeY_offTrackBlade_)->Fill((int)sizeY);
00548 }
00549 }
00550 if(endcap && diskon){
00551 (meCharge_offTrackDisk_)->Fill((float)charge);
00552 (meSize_offTrackDisk_)->Fill((int)size);
00553 if(!reducedSet){
00554 (meSizeX_offTrackDisk_)->Fill((int)sizeX);
00555 (meSizeY_offTrackDisk_)->Fill((int)sizeY);
00556 }
00557 }
00558 if(endcap && ringon){
00559 (meCharge_offTrackRing_)->Fill((float)charge);
00560 (meSize_offTrackRing_)->Fill((int)size);
00561 if(!reducedSet){
00562 (meSizeX_offTrackRing_)->Fill((int)sizeX);
00563 (meSizeY_offTrackRing_)->Fill((int)sizeY);
00564 }
00565 }
00566 }
00567
00568
00569
00570 }
00571
00572 void SiPixelTrackResidualModule::nfill(int onTrack, int offTrack, bool reducedSet, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon){
00573
00574 bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00575 bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00576 bool fillOn = false; if(onTrack>0) fillOn = true;
00577 bool fillOff = false; if(offTrack>0) fillOff = true;
00578
00579 if(modon){
00580 if(fillOn) meNClusters_onTrack_->Fill(onTrack);
00581 if(fillOff) meNClusters_offTrack_->Fill(offTrack);
00582 }
00583 if(ladon && barrel){
00584 if(fillOn) meNClusters_onTrackLad_->Fill(onTrack);
00585 if(fillOff) meNClusters_offTrackLad_->Fill(offTrack);
00586 }
00587
00588 if(layon && barrel){
00589 if(fillOn) meNClusters_onTrackLay_->Fill(onTrack);
00590 if(fillOff) meNClusters_offTrackLay_->Fill(offTrack);
00591 }
00592 if(phion && barrel){
00593 if(fillOn) meNClusters_onTrackPhi_->Fill(onTrack);
00594 if(fillOff) meNClusters_offTrackPhi_->Fill(offTrack);
00595 }
00596 if(bladeon && endcap){
00597 if(fillOn) meNClusters_onTrackBlade_->Fill(onTrack);
00598 if(fillOff) meNClusters_offTrackBlade_->Fill(offTrack);
00599 }
00600 if(diskon && endcap){
00601 if(fillOn) meNClusters_onTrackDisk_->Fill(onTrack);
00602 if(fillOff) meNClusters_offTrackDisk_->Fill(offTrack);
00603 }
00604 if(ringon && endcap){
00605 if(fillOn) meNClusters_onTrackRing_->Fill(onTrack);
00606 if(fillOff) meNClusters_offTrackRing_->Fill(offTrack);
00607 }
00608 }