00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019 #include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h"
00020
00021 #include "FWCore/ServiceRegistry/interface/Service.h"
00022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00024
00025 #include "DQM/SiPixelCommon/interface/SiPixelFolderOrganizer.h"
00026 #include "DQMServices/Core/interface/DQMStore.h"
00027
00028 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00029 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00030 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h"
00031 #include "Geometry/CommonTopologies/interface/PixelTopology.h"
00032
00033 #include "DataFormats/DetId/interface/DetId.h"
00034 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00035 #include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h"
00036 #include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h"
00037
00038 #include <string>
00039 #include <stdlib.h>
00040 #include <iostream>
00041 #include <fstream>
00042
00043 using namespace std;
00044 using namespace edm;
00045
00046 SiPixelDigiSource::SiPixelDigiSource(const edm::ParameterSet& iConfig) :
00047 conf_(iConfig),
00048 src_( conf_.getParameter<edm::InputTag>( "src" ) ),
00049 saveFile( conf_.getUntrackedParameter<bool>("saveFile",false) ),
00050 isPIB( conf_.getUntrackedParameter<bool>("isPIB",false) ),
00051 slowDown( conf_.getUntrackedParameter<bool>("slowDown",false) ),
00052 modOn( conf_.getUntrackedParameter<bool>("modOn",true) ),
00053 twoDimOn( conf_.getUntrackedParameter<bool>("twoDimOn",true) ),
00054 twoDimModOn( conf_.getUntrackedParameter<bool>("twoDimModOn",true) ),
00055 twoDimOnlyLayDisk( conf_.getUntrackedParameter<bool>("twoDimOnlyLayDisk",false) ),
00056 hiRes( conf_.getUntrackedParameter<bool>("hiRes",false) ),
00057 reducedSet( conf_.getUntrackedParameter<bool>("reducedSet",false) ),
00058 ladOn( conf_.getUntrackedParameter<bool>("ladOn",false) ),
00059 layOn( conf_.getUntrackedParameter<bool>("layOn",false) ),
00060 phiOn( conf_.getUntrackedParameter<bool>("phiOn",false) ),
00061 ringOn( conf_.getUntrackedParameter<bool>("ringOn",false) ),
00062 bladeOn( conf_.getUntrackedParameter<bool>("bladeOn",false) ),
00063 diskOn( conf_.getUntrackedParameter<bool>("diskOn",false) ),
00064 bigEventSize( conf_.getUntrackedParameter<int>("bigEventSize",1000) )
00065 {
00066 theDMBE = edm::Service<DQMStore>().operator->();
00067 LogInfo ("PixelDQM") << "SiPixelDigiSource::SiPixelDigiSource: Got DQM BackEnd interface"<<endl;
00068 }
00069
00070
00071 SiPixelDigiSource::~SiPixelDigiSource()
00072 {
00073
00074
00075 LogInfo ("PixelDQM") << "SiPixelDigiSource::~SiPixelDigiSource: Destructor"<<endl;
00076 }
00077
00078
00079 void SiPixelDigiSource::beginJob(){
00080 firstRun = true;
00081
00082 ifstream infile(edm::FileInPath("DQM/SiPixelMonitorClient/test/detId.dat").fullPath().c_str(),ios::in);
00083 int nModsInFile=0;
00084 assert(!infile.fail());
00085 while(!infile.eof()&&nModsInFile<1440) {
00086 infile >> I_name[nModsInFile] >> I_detId[nModsInFile] >> I_fedId[nModsInFile] >> I_linkId1[nModsInFile] >> I_linkId2[nModsInFile];
00087
00088 nModsInFile++;
00089 }
00090 infile.close();
00091 }
00092
00093 void SiPixelDigiSource::beginRun(const edm::Run& r, const edm::EventSetup& iSetup){
00094 LogInfo ("PixelDQM") << " SiPixelDigiSource::beginJob - Initialisation ... " << std::endl;
00095 LogInfo ("PixelDQM") << "Mod/Lad/Lay/Phi " << modOn << "/" << ladOn << "/"
00096 << layOn << "/" << phiOn << std::endl;
00097 LogInfo ("PixelDQM") << "Blade/Disk/Ring" << bladeOn << "/" << diskOn << "/"
00098 << ringOn << std::endl;
00099
00100 LogInfo ("PixelDQM") << "2DIM IS " << twoDimOn << " and set to high resolution? " << hiRes << "\n";
00101
00102 if(firstRun){
00103 eventNo = 0;
00104 lumSec = 0;
00105 nLumiSecs = 0;
00106 nBigEvents = 0;
00107 nBPIXDigis = 0;
00108 nFPIXDigis = 0;
00109 for(int i=0; i!=40; i++) nDigisPerFed[i]=0;
00110 for(int i=0; i!=4; i++) nDigisPerDisk[i]=0;
00111
00112
00113 buildStructure(iSetup);
00114
00115 bookMEs();
00116 firstRun = false;
00117 }
00118 }
00119
00120
00121 void SiPixelDigiSource::endJob(void){
00122
00123 if(saveFile) {
00124 LogInfo ("PixelDQM") << " SiPixelDigiSource::endJob - Saving Root File " << std::endl;
00125 std::string outputFile = conf_.getParameter<std::string>("outputFile");
00126 theDMBE->save( outputFile.c_str() );
00127 }
00128
00129 }
00130
00131
00132
00133
00134 void SiPixelDigiSource::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00135 {
00136 eventNo++;
00137
00138
00139
00140 edm::Handle< edm::DetSetVector<PixelDigi> > input;
00141 iEvent.getByLabel( src_, input );
00142 if (!input.isValid()) return;
00143
00144 DQMStore* theDMBE = edm::Service<DQMStore>().operator->();
00145
00146
00147 int bx = iEvent.bunchCrossing();
00148
00149 int lumiSection = (int)iEvent.luminosityBlock();
00150 int nEventDigis = 0; int nActiveModules = 0;
00151
00152
00153 if(modOn){
00154 MonitorElement* meReset = theDMBE->get("Pixel/averageDigiOccupancy");
00155
00156 if(meReset && lumiSection%8==0){
00157 meReset->Reset();
00158 nBPIXDigis = 0;
00159 nFPIXDigis = 0;
00160 for(int i=0; i!=40; i++) nDigisPerFed[i]=0;
00161 }
00162 }
00163
00164 std::map<uint32_t,SiPixelDigiModule*>::iterator struct_iter;
00165 for(int i=0; i!=192; i++) numberOfDigis[i]=0;
00166 for(int i=0; i!=1152; i++) nDigisPerChan[i]=0;
00167 for(int i=0; i!=4; i++) nDigisPerDisk[i]=0;
00168 for (struct_iter = thePixelStructure.begin() ; struct_iter != thePixelStructure.end() ; struct_iter++) {
00169 int numberOfDigisMod = (*struct_iter).second->fill(*input, modOn,
00170 ladOn, layOn, phiOn,
00171 bladeOn, diskOn, ringOn,
00172 twoDimOn, reducedSet, twoDimModOn, twoDimOnlyLayDisk,
00173 nDigisA, nDigisB);
00174 if(numberOfDigisMod>0){
00175 nEventDigis = nEventDigis + numberOfDigisMod;
00176 nActiveModules++;
00177 bool barrel = DetId((*struct_iter).first).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
00178 bool endcap = DetId((*struct_iter).first).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
00179
00180 if(barrel){
00181
00182 nBPIXDigis = nBPIXDigis + numberOfDigisMod;
00183
00184 for(int i=0; i!=768; i++){
00185
00186 if((*struct_iter).first == I_detId[i]){
00187
00188 nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
00189
00190 int index1 = I_fedId[i]*36+(I_linkId1[i]-1); int index2 = I_fedId[i]*36+(I_linkId2[i]-1);
00191 if(nDigisA>0) nDigisPerChan[index1]=nDigisPerChan[index1]+nDigisA;
00192 if(nDigisB>0) nDigisPerChan[index2]=nDigisPerChan[index2]+nDigisB;
00193
00194 i=767;
00195 }
00196 }
00197
00198 }else if(endcap){
00199
00200 nFPIXDigis = nFPIXDigis + numberOfDigisMod;
00201
00202 PixelEndcapName::HalfCylinder side = PixelEndcapName(DetId((*struct_iter).first)).halfCylinder();
00203 int disk = PixelEndcapName(DetId((*struct_iter).first)).diskName();
00204 int blade = PixelEndcapName(DetId((*struct_iter).first)).bladeName();
00205 int panel = PixelEndcapName(DetId((*struct_iter).first)).pannelName();
00206
00207 int iter=-1; int i=0;
00208 if(side==PixelEndcapName::mI){
00209 if(disk==1){
00210 i=0;
00211 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00212 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00213 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00214 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00215 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00216 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00217 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00218 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00219 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00220 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00221 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00222 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00223 }else if(disk==2){
00224 i=24;
00225 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00226 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00227 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00228 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00229 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00230 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00231 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00232 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00233 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00234 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00235 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00236 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00237 }
00238 }else if(side==PixelEndcapName::mO){
00239 if(disk==1){
00240 i=48;
00241 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00242 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00243 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00244 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00245 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00246 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00247 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00248 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00249 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00250 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00251 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00252 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00253 }else if(disk==2){
00254 i=72;
00255 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00256 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00257 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00258 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00259 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00260 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00261 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00262 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00263 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00264 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00265 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00266 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00267 }
00268 }else if(side==PixelEndcapName::pI){
00269 if(disk==1){
00270 i=96;
00271 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00272 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00273 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00274 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00275 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00276 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00277 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00278 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00279 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00280 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00281 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00282 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00283 }else if(disk==2){
00284 i=120;
00285 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00286 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00287 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00288 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00289 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00290 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00291 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00292 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00293 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00294 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00295 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00296 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00297 }
00298 }else if(side==PixelEndcapName::pO){
00299 if(disk==1){
00300 i=144;
00301 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00302 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00303 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00304 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00305 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00306 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00307 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00308 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00309 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00310 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00311 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00312 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00313 }else if(disk==2){
00314 i=168;
00315 if(blade==1){ if(panel==1) iter=i; else if(panel==2) iter=i+1; }
00316 if(blade==2){ if(panel==1) iter=i+2; else if(panel==2) iter=i+3; }
00317 if(blade==3){ if(panel==1) iter=i+4; else if(panel==2) iter=i+5; }
00318 if(blade==4){ if(panel==1) iter=i+6; else if(panel==2) iter=i+7; }
00319 if(blade==5){ if(panel==1) iter=i+8; else if(panel==2) iter=i+9; }
00320 if(blade==6){ if(panel==1) iter=i+10; else if(panel==2) iter=i+11; }
00321 if(blade==7){ if(panel==1) iter=i+12; else if(panel==2) iter=i+13; }
00322 if(blade==8){ if(panel==1) iter=i+14; else if(panel==2) iter=i+15; }
00323 if(blade==9){ if(panel==1) iter=i+16; else if(panel==2) iter=i+17; }
00324 if(blade==10){ if(panel==1) iter=i+18; else if(panel==2) iter=i+19; }
00325 if(blade==11){ if(panel==1) iter=i+20; else if(panel==2) iter=i+21; }
00326 if(blade==12){ if(panel==1) iter=i+22; else if(panel==2) iter=i+23; }
00327 }
00328 }
00329 numberOfDigis[iter]=numberOfDigis[iter]+numberOfDigisMod;
00330
00331
00332
00333
00334 for(int i=768; i!=1440; i++){
00335
00336 if((*struct_iter).first == I_detId[i]){
00337
00338 nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
00339
00340 i=1439;
00341 }
00342 }
00343 }
00344
00345
00346 }
00347 }
00348
00349
00350
00351
00352
00353 MonitorElement* meE; MonitorElement* meE1; MonitorElement* meE2; MonitorElement* meE3; MonitorElement* meE4;
00354 meE=theDMBE->get("Pixel/Endcap/ALLMODS_ndigisCHAN_Endcap");
00355 if(meE){ for(int j=0; j!=192; j++) if(numberOfDigis[j]>0) meE->Fill((float)numberOfDigis[j]);}
00356 meE1=theDMBE->get("Pixel/Endcap/ALLMODS_ndigisCHAN_EndcapDm1");
00357 if(meE1){ for(int j=0; j!=72; j++) if((j<24||j>47)&&numberOfDigis[j]>0) meE1->Fill((float)numberOfDigis[j]);}
00358 meE2=theDMBE->get("Pixel/Endcap/ALLMODS_ndigisCHAN_EndcapDm2");
00359 if(meE2){ for(int j=24; j!=96; j++) if((j<48||j>71)&&numberOfDigis[j]>0) meE2->Fill((float)numberOfDigis[j]);}
00360 meE3=theDMBE->get("Pixel/Endcap/ALLMODS_ndigisCHAN_EndcapDp1");
00361 if(meE3){ for(int j=96; j!=168; j++) if((j<120||j>143)&&numberOfDigis[j]>0) meE3->Fill((float)numberOfDigis[j]);}
00362 meE4=theDMBE->get("Pixel/Endcap/ALLMODS_ndigisCHAN_EndcapDp2");
00363 if(meE4){ for(int j=120; j!=192; j++) if((j<144||j>167)&&numberOfDigis[j]>0) meE4->Fill((float)numberOfDigis[j]);}
00364
00365 MonitorElement* me1; MonitorElement* me2; MonitorElement* me3; MonitorElement* me4; MonitorElement* me5;
00366 MonitorElement* me6; MonitorElement* me7; MonitorElement* me8; MonitorElement* me9; MonitorElement* me10; MonitorElement* me11;
00367 MonitorElement* me12; MonitorElement* me13; MonitorElement* me14; MonitorElement* me15; MonitorElement* me16; MonitorElement* me17;
00368 MonitorElement* me18; MonitorElement* me19; MonitorElement* me20; MonitorElement* me21; MonitorElement* me22; MonitorElement* me23;
00369 MonitorElement* me24; MonitorElement* me25; MonitorElement* me26; MonitorElement* me27; MonitorElement* me28; MonitorElement* me29;
00370 MonitorElement* me30; MonitorElement* me31; MonitorElement* me32; MonitorElement* me33; MonitorElement* me34; MonitorElement* me35;
00371 MonitorElement* me36;
00372 me1=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh1");
00373 if(me1){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+0]>0) me1->Fill((float)nDigisPerChan[i*36+0]);}
00374 me2=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh2");
00375 if(me2){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+1]>0) me2->Fill((float)nDigisPerChan[i*36+1]);}
00376 me3=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh3");
00377 if(me3){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+2]>0) me3->Fill((float)nDigisPerChan[i*36+2]);}
00378 me4=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh4");
00379 if(me4){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+3]>0) me4->Fill((float)nDigisPerChan[i*36+3]);}
00380 me5=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh5");
00381 if(me5){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+4]>0) me5->Fill((float)nDigisPerChan[i*36+4]);}
00382 me6=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh6");
00383 if(me6){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+5]>0) me6->Fill((float)nDigisPerChan[i*36+5]);}
00384 me7=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh7");
00385 if(me7){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+6]>0) me7->Fill((float)nDigisPerChan[i*36+6]);}
00386 me8=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh8");
00387 if(me8){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+7]>0) me8->Fill((float)nDigisPerChan[i*36+7]);}
00388 me9=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh9");
00389 if(me9){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+8]>0) me9->Fill((float)nDigisPerChan[i*36+8]);}
00390 me10=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh10");
00391 if(me10){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+9]>0) me10->Fill((float)nDigisPerChan[i*36+9]);}
00392 me11=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh11");
00393 if(me11){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+10]>0) me11->Fill((float)nDigisPerChan[i*36+10]);}
00394 me12=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh12");
00395 if(me12){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+11]>0) me12->Fill((float)nDigisPerChan[i*36+11]);}
00396 me13=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh13");
00397 if(me13){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+12]>0) me13->Fill((float)nDigisPerChan[i*36+12]);}
00398 me14=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh14");
00399 if(me14){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+13]>0) me14->Fill((float)nDigisPerChan[i*36+13]);}
00400 me15=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh15");
00401 if(me15){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+14]>0) me15->Fill((float)nDigisPerChan[i*36+14]);}
00402 me16=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh16");
00403 if(me16){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+15]>0) me16->Fill((float)nDigisPerChan[i*36+15]);}
00404 me17=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh17");
00405 if(me17){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+16]>0) me17->Fill((float)nDigisPerChan[i*36+16]);}
00406 me18=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh18");
00407 if(me18){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+17]>0) me18->Fill((float)nDigisPerChan[i*36+17]);}
00408 me19=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh19");
00409 if(me19){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+18]>0) me19->Fill((float)nDigisPerChan[i*36+18]);}
00410 me20=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh20");
00411 if(me20){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+19]>0) me20->Fill((float)nDigisPerChan[i*36+19]);}
00412 me21=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh21");
00413 if(me21){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+20]>0) me21->Fill((float)nDigisPerChan[i*36+20]);}
00414 me22=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh22");
00415 if(me22){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+21]>0) me22->Fill((float)nDigisPerChan[i*36+21]);}
00416 me23=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh23");
00417 if(me23){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+22]>0) me23->Fill((float)nDigisPerChan[i*36+22]);}
00418 me24=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh24");
00419 if(me24){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+23]>0) me24->Fill((float)nDigisPerChan[i*36+23]);}
00420 me25=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh25");
00421 if(me25){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+24]>0) me25->Fill((float)nDigisPerChan[i*36+24]);}
00422 me26=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh26");
00423 if(me26){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+25]>0) me26->Fill((float)nDigisPerChan[i*36+25]);}
00424 me27=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh27");
00425 if(me27){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+26]>0) me27->Fill((float)nDigisPerChan[i*36+26]);}
00426 me28=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh28");
00427 if(me28){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+27]>0) me28->Fill((float)nDigisPerChan[i*36+27]);}
00428 me29=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh29");
00429 if(me29){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+28]>0) me29->Fill((float)nDigisPerChan[i*36+28]);}
00430 me30=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh30");
00431 if(me30){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+29]>0) me30->Fill((float)nDigisPerChan[i*36+29]);}
00432 me31=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh31");
00433 if(me31){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+30]>0) me31->Fill((float)nDigisPerChan[i*36+30]);}
00434 me32=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh32");
00435 if(me32){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+31]>0) me32->Fill((float)nDigisPerChan[i*36+31]);}
00436 me33=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh33");
00437 if(me33){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+32]>0) me33->Fill((float)nDigisPerChan[i*36+32]);}
00438 me34=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh34");
00439 if(me34){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+33]>0) me34->Fill((float)nDigisPerChan[i*36+33]);}
00440 me35=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh35");
00441 if(me35){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+34]>0) me35->Fill((float)nDigisPerChan[i*36+34]);}
00442 me36=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelCh36");
00443 if(me36){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+35]>0) me36->Fill((float)nDigisPerChan[i*36+35]);}
00444
00445
00446 MonitorElement* meX1;
00447 if(nEventDigis>bigEventSize){
00448 meX1 = theDMBE->get("Pixel/bigEventRate");
00449 if(meX1) meX1->Fill(lumiSection,1./23.);
00450 }
00451
00452
00453
00454 MonitorElement* meX2; MonitorElement* meX3;
00455 if(nActiveModules>=4){
00456 meX2 = theDMBE->get("Pixel/pixEvtsPerBX");
00457 if(meX2) meX2->Fill(float(bx));
00458 meX3 = theDMBE->get("Pixel/pixEventRate");
00459 if(meX3) meX3->Fill(lumiSection, 1./23.);
00460 }
00461
00462
00463 MonitorElement* meX4; MonitorElement* meX5;
00464 meX4 = theDMBE->get("Pixel/averageDigiOccupancy");
00465 meX5 = theDMBE->get("Pixel/avgfedDigiOccvsLumi");
00466 if(meX4){
00467 int maxfed=0;
00468 for(int i=0; i!=32; i++){
00469 if(nDigisPerFed[i]>maxfed) maxfed=nDigisPerFed[i];
00470 }
00471 for(int i=0; i!=40; i++){
00472 float averageOcc = 0.;
00473 if(i<32){
00474 float averageBPIXFed = float(nBPIXDigis-maxfed)/31.;
00475 if(averageBPIXFed>0.) averageOcc = nDigisPerFed[i]/averageBPIXFed;
00476
00477 }else{
00478 float averageFPIXFed = float(nFPIXDigis)/8.;
00479 if(averageFPIXFed>0.) averageOcc = nDigisPerFed[i]/averageFPIXFed;
00480
00481 }
00482 meX4->setBinContent(i+1,averageOcc);
00483 int lumiSections8 = int(lumiSection/8);
00484 if (modOn){
00485 if (meX5){
00486 meX5->setBinContent(1+lumiSections8, i+1, averageOcc);
00487 }
00488 }
00489 }
00490 }
00491
00492
00493 if(slowDown) usleep(10000);
00494
00495 }
00496
00497
00498
00499
00500 void SiPixelDigiSource::buildStructure(const edm::EventSetup& iSetup){
00501
00502 LogInfo ("PixelDQM") <<" SiPixelDigiSource::buildStructure" ;
00503 edm::ESHandle<TrackerGeometry> pDD;
00504 iSetup.get<TrackerDigiGeometryRecord>().get( pDD );
00505
00506 LogVerbatim ("PixelDQM") << " *** Geometry node for TrackerGeom is "<<&(*pDD)<<std::endl;
00507 LogVerbatim ("PixelDQM") << " *** I have " << pDD->dets().size() <<" detectors"<<std::endl;
00508 LogVerbatim ("PixelDQM") << " *** I have " << pDD->detTypes().size() <<" types"<<std::endl;
00509
00510 for(TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++){
00511
00512 if(dynamic_cast<PixelGeomDetUnit*>((*it))!=0){
00513
00514 DetId detId = (*it)->geographicalId();
00515 const GeomDetUnit * geoUnit = pDD->idToDetUnit( detId );
00516 const PixelGeomDetUnit * pixDet = dynamic_cast<const PixelGeomDetUnit*>(geoUnit);
00517 int nrows = (pixDet->specificTopology()).nrows();
00518 int ncols = (pixDet->specificTopology()).ncolumns();
00519
00520 if(detId.subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) {
00521 if(isPIB) continue;
00522 LogDebug ("PixelDQM") << " ---> Adding Barrel Module " << detId.rawId() << endl;
00523 uint32_t id = detId();
00524 SiPixelDigiModule* theModule = new SiPixelDigiModule(id, ncols, nrows);
00525 thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,theModule));
00526
00527 } else if(detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) {
00528 LogDebug ("PixelDQM") << " ---> Adding Endcap Module " << detId.rawId() << endl;
00529 uint32_t id = detId();
00530 SiPixelDigiModule* theModule = new SiPixelDigiModule(id, ncols, nrows);
00531
00532 PixelEndcapName::HalfCylinder side = PixelEndcapName(DetId(id)).halfCylinder();
00533 int disk = PixelEndcapName(DetId(id)).diskName();
00534 int blade = PixelEndcapName(DetId(id)).bladeName();
00535 int panel = PixelEndcapName(DetId(id)).pannelName();
00536 int module = PixelEndcapName(DetId(id)).plaquetteName();
00537
00538 char sside[80]; sprintf(sside, "HalfCylinder_%i",side);
00539 char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
00540 char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
00541 char spanel[80]; sprintf(spanel, "Panel_%i",panel);
00542 char smodule[80];sprintf(smodule,"Module_%i",module);
00543 std::string side_str = sside;
00544 std::string disk_str = sdisk;
00545 bool mask = side_str.find("HalfCylinder_1")!=string::npos||
00546 side_str.find("HalfCylinder_2")!=string::npos||
00547 side_str.find("HalfCylinder_4")!=string::npos||
00548 disk_str.find("Disk_2")!=string::npos;
00549
00550 mask = false;
00551 if(isPIB && mask) continue;
00552
00553 thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,theModule));
00554 }
00555
00556 }
00557 }
00558 LogInfo ("PixelDQM") << " *** Pixel Structure Size " << thePixelStructure.size() << endl;
00559 }
00560
00561
00562
00563 void SiPixelDigiSource::bookMEs(){
00564
00565
00566 DQMStore* theDMBE = edm::Service<DQMStore>().operator->();
00567 theDMBE->setCurrentFolder("Pixel");
00568 char title[80]; sprintf(title, "Rate of events with >%i digis;LumiSection;Rate [Hz]",bigEventSize);
00569 bigEventRate = theDMBE->book1D("bigEventRate",title,5000,0.,5000.);
00570 char title1[80]; sprintf(title1, "Pixel events vs. BX;BX;# events");
00571 pixEvtsPerBX = theDMBE->book1D("pixEvtsPerBX",title1,3565,0.,3565.);
00572 char title2[80]; sprintf(title2, "Rate of Pixel events;LumiSection;Rate [Hz]");
00573 pixEventRate = theDMBE->book1D("pixEventRate",title2,5000,0.,5000.);
00574 char title3[80]; sprintf(title3, "Average digi occupancy per FED;FED;NDigis/<NDigis>");
00575 averageDigiOccupancy = theDMBE->book1D("averageDigiOccupancy",title3,40,-0.5,39.5);
00576 if(modOn){
00577 char title4[80]; sprintf(title4, "FED Digi Occupancy (NDigis/<NDigis>) vs LumiSections;Lumi Section;FED");
00578 avgfedDigiOccvsLumi = theDMBE->book2D ("avgfedDigiOccvsLumi", title4, 400,0., 3200., 40, -0.5, 39.5);
00579 }
00580 std::map<uint32_t,SiPixelDigiModule*>::iterator struct_iter;
00581
00582 SiPixelFolderOrganizer theSiPixelFolder;
00583
00584 for(struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++){
00586 if(modOn){
00587 if(theSiPixelFolder.setModuleFolder((*struct_iter).first)){
00588 (*struct_iter).second->book( conf_,0,twoDimOn,hiRes, reducedSet, twoDimModOn);
00589 } else {
00590
00591 if(!isPIB) throw cms::Exception("LogicError")
00592 << "[SiPixelDigiSource::bookMEs] Creation of DQM folder failed";
00593 }
00594 }
00595 if(ladOn){
00596 if(theSiPixelFolder.setModuleFolder((*struct_iter).first,1)){
00597 (*struct_iter).second->book( conf_,1,twoDimOn,hiRes, reducedSet);
00598 } else {
00599 LogDebug ("PixelDQM") << "PROBLEM WITH LADDER-FOLDER\n";
00600 }
00601
00602 }
00603 if(layOn || twoDimOnlyLayDisk){
00604 if(theSiPixelFolder.setModuleFolder((*struct_iter).first,2)){
00605 (*struct_iter).second->book( conf_,2,twoDimOn,hiRes, reducedSet, twoDimOnlyLayDisk);
00606 } else {
00607 LogDebug ("PixelDQM") << "PROBLEM WITH LAYER-FOLDER\n";
00608 }
00609 }
00610
00611 if(phiOn){
00612 if(theSiPixelFolder.setModuleFolder((*struct_iter).first,3)){
00613 (*struct_iter).second->book( conf_,3,twoDimOn,hiRes, reducedSet);
00614 } else {
00615 LogDebug ("PixelDQM") << "PROBLEM WITH PHI-FOLDER\n";
00616 }
00617 }
00618 if(bladeOn){
00619 if(theSiPixelFolder.setModuleFolder((*struct_iter).first,4)){
00620 (*struct_iter).second->book( conf_,4,twoDimOn,hiRes, reducedSet);
00621 } else {
00622 LogDebug ("PixelDQM") << "PROBLEM WITH BLADE-FOLDER\n";
00623 }
00624 }
00625 if(diskOn || twoDimOnlyLayDisk){
00626 if(theSiPixelFolder.setModuleFolder((*struct_iter).first,5)){
00627 (*struct_iter).second->book( conf_,5,twoDimOn,hiRes, reducedSet, twoDimOnlyLayDisk);
00628 } else {
00629 LogDebug ("PixelDQM") << "PROBLEM WITH DISK-FOLDER\n";
00630 }
00631 }
00632 if(ringOn){
00633 if(theSiPixelFolder.setModuleFolder((*struct_iter).first,6)){
00634 (*struct_iter).second->book( conf_,6,twoDimOn,hiRes, reducedSet);
00635 } else {
00636 LogDebug ("PixelDQM") << "PROBLEM WITH RING-FOLDER\n";
00637 }
00638 }
00639 }
00640 std::string currDir = theDMBE->pwd();
00641 theDMBE->cd("Pixel/Barrel");
00642 meNDigisCOMBBarrel_ = theDMBE->book1D("ALLMODS_ndigisCOMB_Barrel","Number of Digis",200,0.,400.);
00643 meNDigisCOMBBarrel_->setAxisTitle("Number of digis per module per event",1);
00644 meNDigisCHANBarrel_ = theDMBE->book1D("ALLMODS_ndigisCHAN_Barrel","Number of Digis",100,0.,1000.);
00645 meNDigisCHANBarrel_->setAxisTitle("Number of digis per FED channel per event",1);
00646 meNDigisCHANBarrelL1_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelL1","Number of Digis L1",100,0.,1000.);
00647 meNDigisCHANBarrelL1_->setAxisTitle("Number of digis per FED channel per event",1);
00648 meNDigisCHANBarrelL2_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelL2","Number of Digis L2",100,0.,1000.);
00649 meNDigisCHANBarrelL2_->setAxisTitle("Number of digis per FED channel per event",1);
00650 meNDigisCHANBarrelL3_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelL3","Number of Digis L3",100,0.,1000.);
00651 meNDigisCHANBarrelL3_->setAxisTitle("Number of digis per FED channel per event",1);
00652 meNDigisCHANBarrelCh1_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh1","Number of Digis Ch1",100,0.,1000.);
00653 meNDigisCHANBarrelCh1_->setAxisTitle("Number of digis per FED channel per event",1);
00654 meNDigisCHANBarrelCh2_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh2","Number of Digis Ch2",100,0.,1000.);
00655 meNDigisCHANBarrelCh2_->setAxisTitle("Number of digis per FED channel per event",1);
00656 meNDigisCHANBarrelCh3_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh3","Number of Digis Ch3",100,0.,1000.);
00657 meNDigisCHANBarrelCh3_->setAxisTitle("Number of digis per FED channel per event",1);
00658 meNDigisCHANBarrelCh4_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh4","Number of Digis Ch4",100,0.,1000.);
00659 meNDigisCHANBarrelCh4_->setAxisTitle("Number of digis per FED channel per event",1);
00660 meNDigisCHANBarrelCh5_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh5","Number of Digis Ch5",100,0.,1000.);
00661 meNDigisCHANBarrelCh5_->setAxisTitle("Number of digis per FED channel per event",1);
00662 meNDigisCHANBarrelCh6_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh6","Number of Digis Ch6",100,0.,1000.);
00663 meNDigisCHANBarrelCh6_->setAxisTitle("Number of digis per FED channel per event",1);
00664 meNDigisCHANBarrelCh7_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh7","Number of Digis Ch7",100,0.,1000.);
00665 meNDigisCHANBarrelCh7_->setAxisTitle("Number of digis per FED channel per event",1);
00666 meNDigisCHANBarrelCh8_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh8","Number of Digis Ch8",100,0.,1000.);
00667 meNDigisCHANBarrelCh8_->setAxisTitle("Number of digis per FED channel per event",1);
00668 meNDigisCHANBarrelCh9_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh9","Number of Digis Ch9",100,0.,1000.);
00669 meNDigisCHANBarrelCh9_->setAxisTitle("Number of digis per FED channel per event",1);
00670 meNDigisCHANBarrelCh10_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh10","Number of Digis Ch10",100,0.,1000.);
00671 meNDigisCHANBarrelCh10_->setAxisTitle("Number of digis per FED channel per event",1);
00672 meNDigisCHANBarrelCh11_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh11","Number of Digis Ch11",100,0.,1000.);
00673 meNDigisCHANBarrelCh11_->setAxisTitle("Number of digis per FED channel per event",1);
00674 meNDigisCHANBarrelCh12_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh12","Number of Digis Ch12",100,0.,1000.);
00675 meNDigisCHANBarrelCh12_->setAxisTitle("Number of digis per FED channel per event",1);
00676 meNDigisCHANBarrelCh13_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh13","Number of Digis Ch13",100,0.,1000.);
00677 meNDigisCHANBarrelCh13_->setAxisTitle("Number of digis per FED channel per event",1);
00678 meNDigisCHANBarrelCh14_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh14","Number of Digis Ch14",100,0.,1000.);
00679 meNDigisCHANBarrelCh14_->setAxisTitle("Number of digis per FED channel per event",1);
00680 meNDigisCHANBarrelCh15_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh15","Number of Digis Ch15",100,0.,1000.);
00681 meNDigisCHANBarrelCh15_->setAxisTitle("Number of digis per FED channel per event",1);
00682 meNDigisCHANBarrelCh16_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh16","Number of Digis Ch16",100,0.,1000.);
00683 meNDigisCHANBarrelCh16_->setAxisTitle("Number of digis per FED channel per event",1);
00684 meNDigisCHANBarrelCh17_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh17","Number of Digis Ch17",100,0.,1000.);
00685 meNDigisCHANBarrelCh17_->setAxisTitle("Number of digis per FED channel per event",1);
00686 meNDigisCHANBarrelCh18_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh18","Number of Digis Ch18",100,0.,1000.);
00687 meNDigisCHANBarrelCh18_->setAxisTitle("Number of digis per FED channel per event",1);
00688 meNDigisCHANBarrelCh19_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh19","Number of Digis Ch19",100,0.,1000.);
00689 meNDigisCHANBarrelCh19_->setAxisTitle("Number of digis per FED channel per event",1);
00690 meNDigisCHANBarrelCh20_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh20","Number of Digis Ch20",100,0.,1000.);
00691 meNDigisCHANBarrelCh20_->setAxisTitle("Number of digis per FED channel per event",1);
00692 meNDigisCHANBarrelCh21_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh21","Number of Digis Ch21",100,0.,1000.);
00693 meNDigisCHANBarrelCh21_->setAxisTitle("Number of digis per FED channel per event",1);
00694 meNDigisCHANBarrelCh22_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh22","Number of Digis Ch22",100,0.,1000.);
00695 meNDigisCHANBarrelCh22_->setAxisTitle("Number of digis per FED channel per event",1);
00696 meNDigisCHANBarrelCh23_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh23","Number of Digis Ch23",100,0.,1000.);
00697 meNDigisCHANBarrelCh23_->setAxisTitle("Number of digis per FED channel per event",1);
00698 meNDigisCHANBarrelCh24_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh24","Number of Digis Ch24",100,0.,1000.);
00699 meNDigisCHANBarrelCh24_->setAxisTitle("Number of digis per FED channel per event",1);
00700 meNDigisCHANBarrelCh25_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh25","Number of Digis Ch25",100,0.,1000.);
00701 meNDigisCHANBarrelCh25_->setAxisTitle("Number of digis per FED channel per event",1);
00702 meNDigisCHANBarrelCh26_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh26","Number of Digis Ch26",100,0.,1000.);
00703 meNDigisCHANBarrelCh26_->setAxisTitle("Number of digis per FED channel per event",1);
00704 meNDigisCHANBarrelCh27_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh27","Number of Digis Ch27",100,0.,1000.);
00705 meNDigisCHANBarrelCh27_->setAxisTitle("Number of digis per FED channel per event",1);
00706 meNDigisCHANBarrelCh28_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh28","Number of Digis Ch28",100,0.,1000.);
00707 meNDigisCHANBarrelCh28_->setAxisTitle("Number of digis per FED channel per event",1);
00708 meNDigisCHANBarrelCh29_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh29","Number of Digis Ch29",100,0.,1000.);
00709 meNDigisCHANBarrelCh29_->setAxisTitle("Number of digis per FED channel per event",1);
00710 meNDigisCHANBarrelCh30_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh30","Number of Digis Ch30",100,0.,1000.);
00711 meNDigisCHANBarrelCh30_->setAxisTitle("Number of digis per FED channel per event",1);
00712 meNDigisCHANBarrelCh31_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh31","Number of Digis Ch31",100,0.,1000.);
00713 meNDigisCHANBarrelCh31_->setAxisTitle("Number of digis per FED channel per event",1);
00714 meNDigisCHANBarrelCh32_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh32","Number of Digis Ch32",100,0.,1000.);
00715 meNDigisCHANBarrelCh32_->setAxisTitle("Number of digis per FED channel per event",1);
00716 meNDigisCHANBarrelCh33_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh33","Number of Digis Ch33",100,0.,1000.);
00717 meNDigisCHANBarrelCh33_->setAxisTitle("Number of digis per FED channel per event",1);
00718 meNDigisCHANBarrelCh34_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh34","Number of Digis Ch34",100,0.,1000.);
00719 meNDigisCHANBarrelCh34_->setAxisTitle("Number of digis per FED channel per event",1);
00720 meNDigisCHANBarrelCh35_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh35","Number of Digis Ch35",100,0.,1000.);
00721 meNDigisCHANBarrelCh35_->setAxisTitle("Number of digis per FED channel per event",1);
00722 meNDigisCHANBarrelCh36_ = theDMBE->book1D("ALLMODS_ndigisCHAN_BarrelCh36","Number of Digis Ch36",100,0.,1000.);
00723 meNDigisCHANBarrelCh36_->setAxisTitle("Number of digis per FED channel per event",1);
00724 theDMBE->cd("Pixel/Endcap");
00725 meNDigisCOMBEndcap_ = theDMBE->book1D("ALLMODS_ndigisCOMB_Endcap","Number of Digis",200,0.,400.);
00726 meNDigisCOMBEndcap_->setAxisTitle("Number of digis per module per event",1);
00727 meNDigisCHANEndcap_ = theDMBE->book1D("ALLMODS_ndigisCHAN_Endcap","Number of Digis",100,0.,1000.);
00728 meNDigisCHANEndcap_->setAxisTitle("Number of digis per FED channel per event",1);
00729 meNDigisCHANEndcapDp1_ = theDMBE->book1D("ALLMODS_ndigisCHAN_EndcapDp1","Number of Digis Disk p1",100,0.,1000.);
00730 meNDigisCHANEndcapDp1_->setAxisTitle("Number of digis per FED channel per event",1);
00731 meNDigisCHANEndcapDp2_ = theDMBE->book1D("ALLMODS_ndigisCHAN_EndcapDp2","Number of Digis Disk p2",100,0.,1000.);
00732 meNDigisCHANEndcapDp2_->setAxisTitle("Number of digis per FED channel per event",1);
00733 meNDigisCHANEndcapDm1_ = theDMBE->book1D("ALLMODS_ndigisCHAN_EndcapDm1","Number of Digis Disk m1",100,0.,1000.);
00734 meNDigisCHANEndcapDm1_->setAxisTitle("Number of digis per FED channel per event",1);
00735 meNDigisCHANEndcapDm2_ = theDMBE->book1D("ALLMODS_ndigisCHAN_EndcapDm2","Number of Digis Disk m2",100,0.,1000.);
00736 meNDigisCHANEndcapDm2_->setAxisTitle("Number of digis per FED channel per event",1);
00737 theDMBE->cd(currDir);
00738 }
00739
00740
00741 DEFINE_FWK_MODULE(SiPixelDigiSource);