CMS 3D CMS Logo

SiPixelTrackResidualModule.cc

Go to the documentation of this file.
00001 // Package:    SiPixelMonitorTrack
00002 // Class:      SiPixelTrackResidualModule
00003 // 
00004 // class SiPixelTrackResidualModule SiPixelTrackResidualModule.cc 
00005 //       DQM/SiPixelMonitorTrack/src/SiPixelTrackResidualModule.cc
00006 //
00007 // Description: SiPixel hit-to-track residual data quality monitoring modules
00008 // Implementation: prototype -> improved -> never final - end of the 1st step 
00009 //
00010 // Original Author: Shan-Huei Chuang
00011 //         Created: Fri Mar 23 18:41:42 CET 2007
00012 // $Id: SiPixelTrackResidualModule.cc,v 1.2 2008/11/05 13:53:08 wehrlilu Exp $
00013 
00014 
00015 #include <string>
00016 #include <iostream>
00017 
00018 #include "DQMServices/Core/interface/DQMStore.h"
00019 #include "FWCore/ServiceRegistry/interface/Service.h"
00020 #include "DQM/SiPixelCommon/interface/SiPixelHistogramId.h"
00021 #include "DQM/SiPixelMonitorTrack/interface/SiPixelTrackResidualModule.h"
00022 
00023 // Data Formats
00024 #include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h"
00025 #include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h"
00026 #include "DataFormats/DetId/interface/DetId.h"
00027 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00028 
00029 
00030 using namespace std; 
00031 
00032 
00033 SiPixelTrackResidualModule::SiPixelTrackResidualModule() : id_(0) {
00034   bBookTracks = true;
00035 }
00036 
00037 
00038 SiPixelTrackResidualModule::SiPixelTrackResidualModule(uint32_t id) : id_(id) { 
00039   bBookTracks = true;
00040 }
00041 
00042 
00043 SiPixelTrackResidualModule::~SiPixelTrackResidualModule() { 
00044  
00045 }
00046 
00047 
00048 void SiPixelTrackResidualModule::book(const edm::ParameterSet& iConfig, int type) {
00049   DQMStore* dbe = edm::Service<DQMStore>().operator->();
00050 
00051   bool barrel = DetId::DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00052   bool endcap = DetId::DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00053   bool isHalfModule = false;
00054   if(barrel){
00055     isHalfModule = PixelBarrelName::PixelBarrelName(DetId::DetId(id_)).isHalfModule(); 
00056   }
00057 
00058   edm::InputTag src = iConfig.getParameter<edm::InputTag>("src");
00059   SiPixelHistogramId* theHistogramId = new SiPixelHistogramId(src.label());
00060   std::string hisID;
00061 
00062   if(type==0){
00063     hisID = theHistogramId->setHistoId("residualX",id_);
00064     meResidualX_ = dbe->book1D(hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00065     meResidualX_->setAxisTitle("hit-to-track residual in x (cm)",1);
00066     
00067     hisID = theHistogramId->setHistoId("residualY",id_);
00068     meResidualY_ = dbe->book1D(hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00069     meResidualY_->setAxisTitle("hit-to-track residual in y (cm)",1);
00070 
00071     delete theHistogramId;
00072   }
00073 
00074   if(type==1 && barrel){
00075     uint32_t DBladder = PixelBarrelName::PixelBarrelName(DetId::DetId(id_)).ladderName();
00076     char sladder[80]; sprintf(sladder,"Ladder_%02i",DBladder);
00077     hisID = src.label() + "_" + sladder;
00078     if(isHalfModule) hisID += "H";
00079     else hisID += "F";
00080 
00081     meResidualXLad_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00082     meResidualXLad_->setAxisTitle("hit-to-track residual in x (cm)",1);
00083     
00084     meResidualYLad_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00085     meResidualYLad_->setAxisTitle("hit-to-track residual in y (cm)",1);
00086   }
00087 
00088   if(type==2 && barrel){
00089     uint32_t DBlayer = PixelBarrelName::PixelBarrelName(DetId::DetId(id_)).layerName();
00090     char slayer[80]; sprintf(slayer,"Layer_%i",DBlayer);
00091     hisID = src.label() + "_" + slayer;
00092 
00093     meResidualXLay_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00094     meResidualXLay_->setAxisTitle("hit-to-track residual in x (cm)",1);
00095     
00096     meResidualYLay_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00097     meResidualYLay_->setAxisTitle("hit-to-track residual in y (cm)",1);
00098   }
00099 
00100   if(type==3 && barrel){
00101     uint32_t DBmodule = PixelBarrelName::PixelBarrelName(DetId::DetId(id_)).moduleName();
00102     char smodule[80]; sprintf(smodule,"Ring_%i",DBmodule);
00103     hisID = src.label() + "_" + smodule;
00104 
00105     meResidualXPhi_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00106     meResidualXPhi_->setAxisTitle("hit-to-track residual in x (cm)",1);
00107     
00108     meResidualYPhi_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00109     meResidualYPhi_->setAxisTitle("hit-to-track residual in y (cm)",1);
00110   }
00111 
00112   if(type==4 && endcap){
00113     uint32_t blade= PixelEndcapName::PixelEndcapName(DetId::DetId(id_)).bladeName();
00114     
00115     char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
00116     hisID = src.label() + "_" + sblade;
00117 
00118     meResidualXBlade_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00119     meResidualXBlade_->setAxisTitle("hit-to-track residual in x (cm)",1);
00120 
00121     meResidualYBlade_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00122     meResidualYBlade_->setAxisTitle("hit-to-track residual in y (cm)",1);
00123   }
00124 
00125   if(type==5 && endcap){
00126     uint32_t disk = PixelEndcapName::PixelEndcapName(DetId::DetId(id_)).diskName();
00127     
00128     char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
00129     hisID = src.label() + "_" + sdisk;
00130 
00131     meResidualXDisk_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00132     meResidualXDisk_->setAxisTitle("hit-to-track residual in x (cm)",1);
00133     
00134     meResidualYDisk_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00135     meResidualYDisk_->setAxisTitle("hit-to-track residual in y (cm)",1);
00136   }
00137 
00138   if(type==6 && endcap){
00139     uint32_t panel= PixelEndcapName::PixelEndcapName(DetId::DetId(id_)).pannelName();
00140     uint32_t module= PixelEndcapName::PixelEndcapName(DetId::DetId(id_)).plaquetteName();
00141     char slab[80]; sprintf(slab, "Panel_%i_Ring_%i",panel, module);
00142     hisID = src.label() + "_" + slab;
00143 
00144     meResidualXRing_ = dbe->book1D("residualX_"+hisID,"Hit-to-Track Residual in X",500,-5.,5.);
00145     meResidualXRing_->setAxisTitle("hit-to-track residual in x (cm)",1);
00146     
00147     meResidualYRing_ = dbe->book1D("residualY_"+hisID,"Hit-to-Track Residual in Y",500,-5.,5.);
00148     meResidualYRing_->setAxisTitle("hit-to-track residual in y (cm)",1);
00149   }
00150 
00151 //   if(type==10){
00152 //     dbe->setCurrentFolder("Pixel");
00153 //     meNofTracks_ = dbe->book1D("ntracks_"+src.label(),"Number of Tracks",4,0,4);
00154 //     meNofTracks_->setAxisTitle("number of tracks (all/pixel/bpix/fpix)",1);
00155 //   }
00156   
00157 }
00158 
00159 
00160 void SiPixelTrackResidualModule::fill(const Measurement2DVector& residual, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {
00161 
00162   bool barrel = DetId::DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00163   bool endcap = DetId::DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00164 
00165   if(modon){
00166     (meResidualX_)->Fill(residual.x()); 
00167     (meResidualY_)->Fill(residual.y()); 
00168   }
00169 
00170   if(ladon && barrel){
00171     (meResidualXLad_)->Fill(residual.x()); 
00172     (meResidualYLad_)->Fill(residual.y()); 
00173   }
00174 
00175   if(layon && barrel){
00176     (meResidualXLay_)->Fill(residual.x()); 
00177     (meResidualYLay_)->Fill(residual.y()); 
00178   }
00179   if(phion && barrel){
00180     (meResidualXPhi_)->Fill(residual.x()); 
00181     (meResidualYPhi_)->Fill(residual.y()); 
00182   }
00183 
00184   if(bladeon && endcap){
00185     (meResidualXBlade_)->Fill(residual.x()); 
00186     (meResidualYBlade_)->Fill(residual.y()); 
00187   }
00188 
00189   if(diskon && endcap){
00190     (meResidualXDisk_)->Fill(residual.x()); 
00191     (meResidualYDisk_)->Fill(residual.y()); 
00192   }
00193 
00194   if(ringon && endcap){
00195     (meResidualXRing_)->Fill(residual.x()); 
00196     (meResidualYRing_)->Fill(residual.y()); 
00197   }
00198 }
00199 
00200 

Generated on Tue Jun 9 17:33:26 2009 for CMSSW by  doxygen 1.5.4