00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "Validation/TrackerRecHits/interface/SiPixelRecHitsValid.h"
00011
00012 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
00013
00014 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
00015 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00016 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00017 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00018 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00019
00020 #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h"
00021 #include "DataFormats/Common/interface/OwnVector.h"
00022 #include "DataFormats/SiPixelDetId/interface/PXBDetId.h"
00023 #include "DataFormats/SiPixelDetId/interface/PXFDetId.h"
00024 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00025 #include "DataFormats/Common/interface/Ref.h"
00026 #include "DataFormats/Common/interface/DetSetVector.h"
00027
00028 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"
00029
00030 #include <math.h>
00031 #include "DQMServices/Core/interface/DQMStore.h"
00032
00033 using namespace std;
00034 using namespace edm;
00035
00036
00037 SiPixelRecHitsValid::SiPixelRecHitsValid(const ParameterSet& ps):
00038 dbe_(0),
00039 conf_(ps),
00040 src_( ps.getParameter<edm::InputTag>( "src" ) )
00041 {
00042 outputFile_ = ps.getUntrackedParameter<string>("outputFile", "pixelrechitshisto.root");
00043 dbe_ = Service<DQMStore>().operator->();
00044
00045 dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustBPIX");
00046
00047 Char_t histo[200];
00048
00049
00050
00051
00052
00053
00054
00055
00056 for (int i=0; i<8; i++) {
00057 sprintf(histo, "Clust_y_size_Module%d", i+1);
00058 clustYSizeModule[i] = dbe_->book1D(histo,"Cluster y-size by Module", 20, 0.5, 20.5);
00059 }
00060
00061
00062 for (int i=0; i<3; i++) {
00063 sprintf(histo, "Clust_x_size_Layer%d", i+1);
00064 clustXSizeLayer[i] = dbe_->book1D(histo,"Cluster x-size by Layer", 20, 0.5, 20.5);
00065 }
00066
00067
00068 for (int i=0; i<8; i++) {
00069
00070 sprintf(histo, "Clust_charge_Layer1_Module%d", i+1);
00071 clustChargeLayer1Modules[i] = dbe_->book1D(histo, "Cluster charge Layer 1 by Module", 50, 0., 200000.);
00072
00073
00074 sprintf(histo, "Clust_charge_Layer2_Module%d", i+1);
00075 clustChargeLayer2Modules[i] = dbe_->book1D(histo, "Cluster charge Layer 2 by Module", 50, 0., 200000.);
00076
00077
00078 sprintf(histo, "Clust_charge_Layer3_Module%d", i+1);
00079 clustChargeLayer3Modules[i] = dbe_->book1D(histo, "Cluster charge Layer 3 by Module",50, 0., 200000.);
00080 }
00081
00082 dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustFPIX");
00083
00084 for (int i=0; i<7; i++) {
00085
00086 sprintf(histo, "Clust_x_size_Disk1_Plaquette%d", i+1);
00087 clustXSizeDisk1Plaquettes[i] = dbe_->book1D(histo, "Cluster X-size for Disk1 by Plaquette", 20, 0.5, 20.5);
00088
00089
00090 sprintf(histo, "Clust_x_size_Disk2_Plaquette%d", i+1);
00091 clustXSizeDisk2Plaquettes[i] = dbe_->book1D(histo, "Cluster X-size for Disk2 by Plaquette", 20, 0.5, 20.5);
00092
00093
00094 sprintf(histo, "Clust_y_size_Disk1_Plaquette%d", i+1);
00095 clustYSizeDisk1Plaquettes[i] = dbe_->book1D(histo, "Cluster Y-size for Disk1 by Plaquette", 20, 0.5, 20.5);
00096
00097
00098 sprintf(histo, "Clust_y_size_Disk2_Plaquette%d", i+1);
00099 clustYSizeDisk2Plaquettes[i] = dbe_->book1D(histo, "Cluster Y-size for Disk2 by Plaquette", 20, 0.5, 20.5);
00100
00101
00102 sprintf(histo, "Clust_charge_Disk1_Plaquette%d", i+1);
00103 clustChargeDisk1Plaquettes[i] = dbe_->book1D(histo, "Cluster charge for Disk1 by Plaquette", 50, 0., 200000.);
00104
00105
00106 sprintf(histo, "Clust_charge_Disk2_Plaquette%d", i+1);
00107 clustChargeDisk2Plaquettes[i] = dbe_->book1D(histo, "Cluster charge for Disk2 by Plaquette", 50, 0., 200000.);
00108 }
00109
00110
00111
00112 dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitBPIX");
00113
00114 recHitXResAllB = dbe_->book1D("RecHit_xres_b_All","RecHit X Res All Modules in Barrel", 100, -200., 200.);
00115
00116
00117 recHitYResAllB = dbe_->book1D("RecHit_yres_b_All","RecHit Y Res All Modules in Barrel", 100, -200., 200.);
00118
00119
00120 recHitXFullModules = dbe_->book1D("RecHit_x_FullModules", "RecHit X distribution for full modules", 100,-2., 2.);
00121
00122
00123 recHitXHalfModules = dbe_->book1D("RecHit_x_HalfModules", "RecHit X distribution for half modules", 100, -1., 1.);
00124
00125
00126 recHitYAllModules = dbe_->book1D("RecHit_y_AllModules", "RecHit Y distribution for all modules", 100, -4., 4.);
00127
00128
00129 for (int i=0; i<3; i++) {
00130
00131 sprintf(histo, "RecHit_XRes_FlippedLadder_Layer%d", i+1);
00132 recHitXResFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XRes Flipped Ladders by Layer", 100, -200., 200.);
00133
00134
00135 sprintf(histo, "RecHit_XRes_UnFlippedLadder_Layer%d", i+1);
00136 recHitXResNonFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XRes NonFlipped Ladders by Layer", 100, -200., 200.);
00137 }
00138
00139
00140 for (int i=0; i<8; i++) {
00141
00142 sprintf(histo, "RecHit_YRes_Layer1_Module%d", i+1);
00143 recHitYResLayer1Modules[i] = dbe_->book1D(histo, "RecHit YRes Layer1 by module", 100, -200., 200.);
00144
00145
00146 sprintf(histo, "RecHit_YRes_Layer2_Module%d", i+1);
00147 recHitYResLayer2Modules[i] = dbe_->book1D(histo, "RecHit YRes Layer2 by module", 100, -200., 200.);
00148
00149
00150 sprintf(histo, "RecHit_YRes_Layer3_Module%d", i+1);
00151 recHitYResLayer3Modules[i] = dbe_->book1D(histo, "RecHit YRes Layer3 by module", 100, -200., 200.);
00152 }
00153
00154 dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitFPIX");
00155
00156 recHitXResAllF = dbe_->book1D("RecHit_xres_f_All", "RecHit X Res All in Forward", 100, -200., 200.);
00157
00158
00159 recHitYResAllF = dbe_->book1D("RecHit_yres_f_All", "RecHit Y Res All in Forward", 100, -200., 200.);
00160
00161
00162 recHitXPlaquetteSize1 = dbe_->book1D("RecHit_x_Plaquette_xsize1", "RecHit X Distribution for plaquette x-size1", 100, -2., 2.);
00163
00164
00165 recHitXPlaquetteSize2 = dbe_->book1D("RecHit_x_Plaquette_xsize2", "RecHit X Distribution for plaquette x-size2", 100, -2., 2.);
00166
00167
00168 recHitYPlaquetteSize2 = dbe_->book1D("RecHit_y_Plaquette_ysize2", "RecHit Y Distribution for plaquette y-size2", 100, -4., 4.);
00169
00170
00171 recHitYPlaquetteSize3 = dbe_->book1D("RecHit_y_Plaquette_ysize3", "RecHit Y Distribution for plaquette y-size3", 100, -4., 4.);
00172
00173
00174 recHitYPlaquetteSize4 = dbe_->book1D("RecHit_y_Plaquette_ysize4", "RecHit Y Distribution for plaquette y-size4", 100, -4., 4.);
00175
00176
00177 recHitYPlaquetteSize5 = dbe_->book1D("RecHit_y_Plaquette_ysize5", "RecHit Y Distribution for plaquette y-size5", 100, -4., 4.);
00178
00179
00180 for (int i=0; i<7; i++) {
00181
00182 sprintf(histo, "RecHit_XRes_Disk1_Plaquette%d", i+1);
00183 recHitXResDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit XRes Disk1 by plaquette", 100, -200., 200.);
00184
00185 sprintf(histo, "RecHit_XRes_Disk2_Plaquette%d", i+1);
00186 recHitXResDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit XRes Disk2 by plaquette", 100, -200., 200.);
00187
00188
00189 sprintf(histo, "RecHit_YRes_Disk1_Plaquette%d", i+1);
00190 recHitYResDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit YRes Disk1 by plaquette", 100, -200., 200.);
00191
00192 sprintf(histo, "RecHit_YRes_Disk2_Plaquette%d", i+1);
00193 recHitYResDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit YRes Disk2 by plaquette", 100, -200., 200.);
00194
00195 }
00196
00197
00198 dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsBPIX");
00199 recHitXPullAllB = dbe_->book1D("RecHit_xres_b_All" , "RecHit X Pull All Modules in Barrel" , 100, -10.0, 10.0);
00200 recHitYPullAllB = dbe_->book1D("RecHit_yres_b_All" , "RecHit Y Pull All Modules in Barrel" , 100, -10.0, 10.0);
00201
00202 for (int i=0; i<3; i++)
00203 {
00204 sprintf(histo, "RecHit_XPull_FlippedLadder_Layer%d", i+1);
00205 recHitXPullFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XPull Flipped Ladders by Layer", 100, -10.0, 10.0);
00206
00207 sprintf(histo, "RecHit_XPull_UnFlippedLadder_Layer%d", i+1);
00208 recHitXPullNonFlippedLadderLayers[i] = dbe_->book1D(histo, "RecHit XPull NonFlipped Ladders by Layer", 100, -10.0, 10.0);
00209 }
00210
00211 for (int i=0; i<8; i++)
00212 {
00213 sprintf(histo, "RecHit_YPull_Layer1_Module%d", i+1);
00214 recHitYPullLayer1Modules[i] = dbe_->book1D(histo, "RecHit YPull Layer1 by module", 100, -10.0, 10.0);
00215
00216 sprintf(histo, "RecHit_YPull_Layer2_Module%d", i+1);
00217 recHitYPullLayer2Modules[i] = dbe_->book1D(histo, "RecHit YPull Layer2 by module", 100, -10.0, 10.0);
00218
00219 sprintf(histo, "RecHit_YPull_Layer3_Module%d", i+1);
00220 recHitYPullLayer3Modules[i] = dbe_->book1D(histo, "RecHit YPull Layer3 by module", 100, -10.0, 10.0);
00221 }
00222
00223 dbe_->setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsFPIX");
00224 recHitXPullAllF = dbe_->book1D("RecHit_XPull_f_All", "RecHit X Pull All in Forward", 100, -10.0, 10.0);
00225
00226 recHitYPullAllF = dbe_->book1D("RecHit_YPull_f_All", "RecHit Y Pull All in Forward", 100, -10.0, 10.0);
00227
00228 for (int i=0; i<7; i++)
00229 {
00230 sprintf(histo, "RecHit_XPull_Disk1_Plaquette%d", i+1);
00231 recHitXPullDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit XPull Disk1 by plaquette", 100, -10.0, 10.0);
00232 sprintf(histo, "RecHit_XPull_Disk2_Plaquette%d", i+1);
00233 recHitXPullDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit XPull Disk2 by plaquette", 100, -10.0, 10.0);
00234
00235 sprintf(histo, "RecHit_YPull_Disk1_Plaquette%d", i+1);
00236 recHitYPullDisk1Plaquettes[i] = dbe_->book1D(histo, "RecHit YPull Disk1 by plaquette", 100, -10.0, 10.0);
00237
00238 sprintf(histo, "RecHit_YPull_Disk2_Plaquette%d", i+1);
00239 recHitYPullDisk2Plaquettes[i] = dbe_->book1D(histo, "RecHit YPull Disk2 by plaquette", 100, -10.0, 10.0);
00240 }
00241
00242 }
00243
00244 SiPixelRecHitsValid::~SiPixelRecHitsValid() {
00245 }
00246
00247 void SiPixelRecHitsValid::beginJob() {
00248
00249 }
00250
00251 void SiPixelRecHitsValid::endJob() {
00252 if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
00253 }
00254
00255 void SiPixelRecHitsValid::analyze(const edm::Event& e, const edm::EventSetup& es)
00256 {
00257
00258 LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
00259 if ( (int) e.id().event() % 1000 == 0 )
00260 cout << " Run = " << e.id().run() << " Event = " << e.id().event() << endl;
00261
00262
00263 edm::Handle<SiPixelRecHitCollection> recHitColl;
00264 e.getByLabel( src_, recHitColl);
00265
00266
00267 edm::ESHandle<TrackerGeometry> geom;
00268 es.get<TrackerDigiGeometryRecord>().get(geom);
00269 const TrackerGeometry& theTracker(*geom);
00270
00271 TrackerHitAssociator associate( e, conf_ );
00272
00273
00274 for (TrackerGeometry::DetContainer::const_iterator it = geom->dets().begin(); it != geom->dets().end(); it++)
00275 {
00276 DetId detId = ((*it)->geographicalId());
00277 unsigned int subid=detId.subdetId();
00278
00279 if (! ((subid==1) || (subid==2))) continue;
00280
00281 const PixelGeomDetUnit * theGeomDet = dynamic_cast<const PixelGeomDetUnit*>(theTracker.idToDet(detId) );
00282
00283 SiPixelRecHitCollection::const_iterator pixeldet = recHitColl->find(detId);
00284 if (pixeldet == recHitColl->end()) continue;
00285 SiPixelRecHitCollection::DetSet pixelrechitRange = *pixeldet;
00286 SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorBegin = pixelrechitRange.begin();
00287 SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorEnd = pixelrechitRange.end();
00288 SiPixelRecHitCollection::DetSet::const_iterator pixeliter = pixelrechitRangeIteratorBegin;
00289 std::vector<PSimHit> matched;
00290
00291
00292 for ( ; pixeliter != pixelrechitRangeIteratorEnd; pixeliter++)
00293 {
00294 matched.clear();
00295 matched = associate.associateHit(*pixeliter);
00296
00297 if ( !matched.empty() )
00298 {
00299 float closest = 9999.9;
00300 std::vector<PSimHit>::const_iterator closestit = matched.begin();
00301 LocalPoint lp = pixeliter->localPosition();
00302 float rechit_x = lp.x();
00303 float rechit_y = lp.y();
00304
00305
00306 for (std::vector<PSimHit>::const_iterator m = matched.begin(); m<matched.end(); m++)
00307 {
00308 float sim_x1 = (*m).entryPoint().x();
00309 float sim_x2 = (*m).exitPoint().x();
00310 float sim_xpos = 0.5*(sim_x1+sim_x2);
00311
00312 float sim_y1 = (*m).entryPoint().y();
00313 float sim_y2 = (*m).exitPoint().y();
00314 float sim_ypos = 0.5*(sim_y1+sim_y2);
00315
00316 float x_res = fabs(sim_xpos - rechit_x);
00317 float y_res = fabs(sim_ypos - rechit_y);
00318
00319 float dist = sqrt(x_res*x_res + y_res*y_res);
00320
00321 if ( dist < closest )
00322 {
00323 closest = x_res;
00324 closestit = m;
00325 }
00326 }
00327
00328 if (subid==1)
00329 {
00330 fillBarrel(*pixeliter, *closestit, detId, theGeomDet);
00331 }
00332 if (subid==2)
00333 {
00334 fillForward(*pixeliter, *closestit, detId, theGeomDet);
00335 }
00336
00337 }
00338 }
00339 }
00340 }
00341
00342 void SiPixelRecHitsValid::fillBarrel(const SiPixelRecHit& recHit, const PSimHit& simHit,
00343 DetId detId, const PixelGeomDetUnit* theGeomDet)
00344 {
00345 const float cmtomicron = 10000.0;
00346
00347 LocalPoint lp = recHit.localPosition();
00348 float lp_y = lp.y();
00349 float lp_x = lp.x();
00350
00351 LocalError lerr = recHit.localPositionError();
00352 float lerr_x = sqrt(lerr.xx());
00353 float lerr_y = sqrt(lerr.yy());
00354
00355 recHitYAllModules->Fill(lp_y);
00356
00357 float sim_x1 = simHit.entryPoint().x();
00358 float sim_x2 = simHit.exitPoint().x();
00359 float sim_xpos = 0.5*(sim_x1 + sim_x2);
00360 float res_x = (lp.x() - sim_xpos)*cmtomicron;
00361
00362 recHitXResAllB->Fill(res_x);
00363
00364 float sim_y1 = simHit.entryPoint().y();
00365 float sim_y2 = simHit.exitPoint().y();
00366 float sim_ypos = 0.5*(sim_y1 + sim_y2);
00367 float res_y = (lp.y() - sim_ypos)*cmtomicron;
00368
00369 recHitYResAllB->Fill(res_y);
00370
00371 float pull_x = ( lp_x - sim_xpos ) / lerr_x;
00372 float pull_y = ( lp_y - sim_ypos ) / lerr_y;
00373
00374 recHitXPullAllB->Fill(pull_x);
00375 recHitYPullAllB->Fill(pull_y);
00376
00377 int rows = theGeomDet->specificTopology().nrows();
00378
00379 if (rows == 160)
00380 {
00381 recHitXFullModules->Fill(lp_x);
00382 }
00383 else if (rows == 80)
00384 {
00385 recHitXHalfModules->Fill(lp_x);
00386 }
00387
00388 float tmp1 = theGeomDet->surface().toGlobal(Local3DPoint(0.,0.,0.)).perp();
00389 float tmp2 = theGeomDet->surface().toGlobal(Local3DPoint(0.,0.,1.)).perp();
00390
00391 if (tmp2<tmp1)
00392 {
00393 for (unsigned int i=0; i<3; i++)
00394 {
00395 if (PXBDetId(detId).layer() == i+1)
00396 {
00397 recHitXResFlippedLadderLayers[i]->Fill(res_x);
00398 recHitXPullFlippedLadderLayers[i]->Fill(pull_x);
00399 }
00400 }
00401 }
00402 else
00403 {
00404 for (unsigned int i=0; i<3; i++)
00405 {
00406 if (PXBDetId(detId).layer() == i+1)
00407 {
00408 recHitXResNonFlippedLadderLayers[i]->Fill(res_x);
00409 recHitXPullNonFlippedLadderLayers[i]->Fill(pull_x);
00410 }
00411 }
00412 }
00413
00414
00415 SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
00416
00417
00418 for (unsigned int i=0; i<8; i++)
00419 {
00420 if (PXBDetId(detId).module() == i+1)
00421 {
00422 int sizeY = (*clust).sizeY();
00423 clustYSizeModule[i]->Fill(sizeY);
00424
00425 if (PXBDetId(detId).layer() == 1)
00426 {
00427 float charge = (*clust).charge();
00428 clustChargeLayer1Modules[i]->Fill(charge);
00429 recHitYResLayer1Modules[i]->Fill(res_y);
00430 recHitYPullLayer1Modules[i]->Fill(pull_y);
00431 }
00432 else if (PXBDetId(detId).layer() == 2)
00433 {
00434 float charge = (*clust).charge();
00435 clustChargeLayer2Modules[i]->Fill(charge);
00436 recHitYResLayer2Modules[i]->Fill(res_y);
00437 recHitYPullLayer2Modules[i]->Fill(pull_y);
00438 }
00439 else if (PXBDetId(detId).layer() == 3)
00440 {
00441 float charge = (*clust).charge();
00442 clustChargeLayer3Modules[i]->Fill(charge);
00443 recHitYResLayer3Modules[i]->Fill(res_y);
00444 recHitYPullLayer3Modules[i]->Fill(pull_y);
00445 }
00446 }
00447 }
00448 int sizeX = (*clust).sizeX();
00449 if (PXBDetId(detId).layer() == 1) clustXSizeLayer[0]->Fill(sizeX);
00450 if (PXBDetId(detId).layer() == 2) clustXSizeLayer[1]->Fill(sizeX);
00451 if (PXBDetId(detId).layer() == 3) clustXSizeLayer[2]->Fill(sizeX);
00452 }
00453
00454 void SiPixelRecHitsValid::fillForward(const SiPixelRecHit & recHit, const PSimHit & simHit,
00455 DetId detId,const PixelGeomDetUnit * theGeomDet )
00456 {
00457 int rows = theGeomDet->specificTopology().nrows();
00458 int cols = theGeomDet->specificTopology().ncolumns();
00459
00460 const float cmtomicron = 10000.0;
00461
00462 LocalPoint lp = recHit.localPosition();
00463 float lp_x = lp.x();
00464 float lp_y = lp.y();
00465
00466 LocalError lerr = recHit.localPositionError();
00467 float lerr_x = sqrt(lerr.xx());
00468 float lerr_y = sqrt(lerr.yy());
00469
00470 float sim_x1 = simHit.entryPoint().x();
00471 float sim_x2 = simHit.exitPoint().x();
00472 float sim_xpos = 0.5*(sim_x1 + sim_x2);
00473
00474 float sim_y1 = simHit.entryPoint().y();
00475 float sim_y2 = simHit.exitPoint().y();
00476 float sim_ypos = 0.5*(sim_y1 + sim_y2);
00477
00478 float pull_x = ( lp_x - sim_xpos ) / lerr_x;
00479 float pull_y = ( lp_y - sim_ypos ) / lerr_y;
00480
00481
00482 if (rows == 80)
00483 {
00484 recHitXPlaquetteSize1->Fill(lp_x);
00485 }
00486 else if (rows == 160)
00487 {
00488 recHitXPlaquetteSize2->Fill(lp_x);
00489 }
00490
00491 if (cols == 104)
00492 {
00493 recHitYPlaquetteSize2->Fill(lp_y);
00494 }
00495 else if (cols == 156)
00496 {
00497 recHitYPlaquetteSize3->Fill(lp_y);
00498 }
00499 else if (cols == 208)
00500 {
00501 recHitYPlaquetteSize4->Fill(lp_y);
00502 }
00503 else if (cols == 260)
00504 {
00505 recHitYPlaquetteSize5->Fill(lp_y);
00506 }
00507
00508 float res_x = (lp.x() - sim_xpos)*cmtomicron;
00509
00510 recHitXResAllF->Fill(res_x);
00511 recHitXPullAllF->Fill(pull_x);
00512
00513 float res_y = (lp.y() - sim_ypos)*cmtomicron;
00514
00515 recHitYPullAllF->Fill(pull_y);
00516
00517
00518 SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
00519
00520
00521 for (unsigned int i=0; i<7; i++)
00522 {
00523 if (PXFDetId(detId).module() == i+1)
00524 {
00525 if (PXFDetId(detId).disk() == 1)
00526 {
00527 int sizeX = (*clust).sizeX();
00528 clustXSizeDisk1Plaquettes[i]->Fill(sizeX);
00529
00530 int sizeY = (*clust).sizeY();
00531 clustYSizeDisk1Plaquettes[i]->Fill(sizeY);
00532
00533 float charge = (*clust).charge();
00534 clustChargeDisk1Plaquettes[i]->Fill(charge);
00535
00536 recHitXResDisk1Plaquettes[i]->Fill(res_x);
00537 recHitYResDisk1Plaquettes[i]->Fill(res_y);
00538
00539 recHitXPullDisk1Plaquettes[i]->Fill(pull_x);
00540 recHitYPullDisk1Plaquettes[i]->Fill(pull_y);
00541 }
00542 else
00543 {
00544 int sizeX = (*clust).sizeX();
00545 clustXSizeDisk2Plaquettes[i]->Fill(sizeX);
00546
00547 int sizeY = (*clust).sizeY();
00548 clustYSizeDisk2Plaquettes[i]->Fill(sizeY);
00549
00550 float charge = (*clust).charge();
00551 clustChargeDisk2Plaquettes[i]->Fill(charge);
00552
00553 recHitXResDisk2Plaquettes[i]->Fill(res_x);
00554 recHitYResDisk2Plaquettes[i]->Fill(res_y);
00555
00556 recHitXPullDisk2Plaquettes[i]->Fill(pull_x);
00557 recHitYPullDisk2Plaquettes[i]->Fill(pull_y);
00558
00559 }
00560 }
00561 else if (PXFDetId(detId).panel() == 2 && (PXFDetId(detId).module()+4) == i+1)
00562 {
00563 if (PXFDetId(detId).disk() == 1)
00564 {
00565 int sizeX = (*clust).sizeX();
00566 clustXSizeDisk1Plaquettes[i]->Fill(sizeX);
00567
00568 int sizeY = (*clust).sizeY();
00569 clustYSizeDisk1Plaquettes[i]->Fill(sizeY);
00570
00571 float charge = (*clust).charge();
00572 clustChargeDisk1Plaquettes[i]->Fill(charge);
00573
00574 recHitXResDisk1Plaquettes[i]->Fill(res_x);
00575 recHitYResDisk1Plaquettes[i]->Fill(res_y);
00576
00577 recHitXPullDisk1Plaquettes[i]->Fill(pull_x);
00578 recHitYPullDisk1Plaquettes[i]->Fill(pull_y);
00579 }
00580 else
00581 {
00582 int sizeX = (*clust).sizeX();
00583 clustXSizeDisk2Plaquettes[i]->Fill(sizeX);
00584
00585 int sizeY = (*clust).sizeY();
00586 clustYSizeDisk2Plaquettes[i]->Fill(sizeY);
00587
00588 float charge = (*clust).charge();
00589 clustChargeDisk2Plaquettes[i]->Fill(charge);
00590
00591 recHitXResDisk2Plaquettes[i]->Fill(res_x);
00592 recHitYResDisk2Plaquettes[i]->Fill(res_y);
00593
00594 recHitXPullDisk2Plaquettes[i]->Fill(pull_x);
00595 recHitYPullDisk2Plaquettes[i]->Fill(pull_y);
00596
00597 }
00598 }
00599 }
00600 }