CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/DQM/SiPixelMonitorDigi/src/SiPixelDigiSource.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    SiPixelMonitorDigi
00004 // Class:      SiPixelDigiSource
00005 // 
00013 //
00014 // Original Author:  Vincenzo Chiochia
00015 //         Created:  
00016 // $Id: SiPixelDigiSource.cc,v 1.48 2010/11/08 11:45:33 merkelp Exp $
00017 //
00018 //
00019 #include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h"
00020 // Framework
00021 #include "FWCore/ServiceRegistry/interface/Service.h"
00022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00024 // DQM Framework
00025 #include "DQM/SiPixelCommon/interface/SiPixelFolderOrganizer.h"
00026 #include "DQMServices/Core/interface/DQMStore.h"
00027 // Geometry
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 // DataFormats
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    // do anything here that needs to be done at desctruction time
00074    // (e.g. close files, deallocate resources etc.)
00075   LogInfo ("PixelDQM") << "SiPixelDigiSource::~SiPixelDigiSource: Destructor"<<endl;
00076 }
00077 
00078 
00079 void SiPixelDigiSource::beginJob(){
00080   firstRun = true;  
00081   // find a FED# for the current detId:
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     //cout<<nModsInFile<<" , "<<I_name[nModsInFile]<<" , "<<I_detId[nModsInFile]<<" , "<<I_fedId[nModsInFile]<<" , "<<I_linkId[nModsInFile]<<endl; ;
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     // Build map
00113     buildStructure(iSetup);
00114     // Book Monitoring Elements
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 // Method called for every event
00133 //------------------------------------------------------------------
00134 void SiPixelDigiSource::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00135 {
00136   eventNo++;
00137   //cout<<"BIGFATEVENTNUMBER: "<<eventNo<<endl;
00138 
00139   // get input data
00140   edm::Handle< edm::DetSetVector<PixelDigi> >  input;
00141   iEvent.getByLabel( src_, input );
00142   if (!input.isValid()) return; 
00143   // Get DQM interface
00144   DQMStore* theDMBE = edm::Service<DQMStore>().operator->();
00145   
00146   //float iOrbitSec = iEvent.orbitNumber()/11223.;
00147   int bx = iEvent.bunchCrossing();
00148   //long long tbx = (long long)iEvent.orbitNumber() * 3564 + bx;
00149   int lumiSection = (int)iEvent.luminosityBlock();
00150   int nEventDigis = 0; int nActiveModules = 0;
00151   //int nEventBPIXDigis = 0; int nEventFPIXDigis = 0;
00152   
00153   if(modOn){
00154     MonitorElement* meReset = theDMBE->get("Pixel/averageDigiOccupancy");
00155     //if(meReset && eventNo%1000==0){
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       //if((*struct_iter).first >= 302055684 && (*struct_iter).first <= 302197792 ){ // Barrel
00180       if(barrel){ // Barrel
00181         //cout<<"AAbpix: "<<numberOfDigisMod<<" + "<<nBPIXDigis<<" = ";
00182         nBPIXDigis = nBPIXDigis + numberOfDigisMod;
00183         //cout<<nBPIXDigis<<endl;
00184         for(int i=0; i!=768; i++){
00185           //cout<<"\t\t\t bpix: "<<i<<" , "<<(*struct_iter).first<<" , "<<I_detId[i]<<endl;
00186           if((*struct_iter).first == I_detId[i]){
00187             //if(I_fedId[i]>=32&&I_fedId[i]<=39) std::cout<<"Attention: a BPIX module matched to an FPIX FED!"<<std::endl;
00188             nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
00189             //cout<<"BPIX: "<<i<<" , "<<I_fedId[i]<<" , "<<numberOfDigisMod<<" , "<<nDigisPerFed[I_fedId[i]]<<endl;
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             //cout<<"BPIX: "<<i<<" , "<<I_linkId1[i]<<" , "<<I_linkId2[i]<<" , "<<nDigisA<<" , "<<nDigisB<<endl;
00194             i=767;
00195           }
00196         }
00197       //}else if((*struct_iter).first >= 343999748 && (*struct_iter).first <= 352477708 ){ // Endcap
00198       }else if(endcap){ // Endcap
00199         //cout<<"AAfpix: "<<nFPIXDigis<<" = ";
00200         nFPIXDigis = nFPIXDigis + numberOfDigisMod;
00201         //cout<<nFPIXDigis<<endl;
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         //std::cout<<"Endcap: "<<side<<" , "<<disk<<" , "<<blade<<" , "<<panel<<" , "<<std::endl;
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         //if(side==PixelEndcapName::pO||side==PixelEndcapName::pI){
00331         //  if(disk==2){ 
00332         //  std::cout<<"status: "<<iter<<","<<side<<","<<disk<<","<<blade<<","<<panel<<","<<numberOfDigisMod<<","<<numberOfDigis[iter]<<std::endl;       
00333         //}}
00334         for(int i=768; i!=1440; i++){
00335           //cout<<"\t\t\t fpix: "<<i<<" , "<<(*struct_iter).first<<" , "<<I_detId[i]<<endl;
00336           if((*struct_iter).first == I_detId[i]){
00337             //if(I_fedId[i]<32||I_fedId[i]>39) std::cout<<"Attention: an FPIX module matched to a BPIX FED!"<<std::endl;
00338             nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
00339             //cout<<"FPIX: "<<i<<" , "<<I_fedId[i]<<" , "<<nDigisPerFed[I_fedId[i]]<<endl;
00340             i=1439;
00341           }
00342         }
00343       } //endif Barrel/Endcap
00344       //cout<<"numberOfDigis: "<<numberOfDigisMod<<" , nBPIXDigis: "<<nBPIXDigis<<" , nFPIXDigis: "<<nFPIXDigis<<endl;
00345       // digi occupancy per individual FED channel:
00346     } // endif any digis in this module
00347   } // endfor loop over all modules
00348   
00349 //  if(lumiSection>lumSec){ lumSec = lumiSection; nLumiSecs++; }
00350 //  if(nEventDigis>bigEventSize) nBigEvents++;
00351 //  if(nLumiSecs%5==0){
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   // Rate of events with >N digis:
00446   MonitorElement* meX1;
00447   if(nEventDigis>bigEventSize){
00448     meX1 = theDMBE->get("Pixel/bigEventRate");
00449     if(meX1) meX1->Fill(lumiSection,1./23.);    
00450   }
00451   //std::cout<<"nEventDigis: "<<nEventDigis<<" , nLumiSecs: "<<nLumiSecs<<" , nBigEvents: "<<nBigEvents<<std::endl;
00452   
00453   // Rate of pixel events and total number of pixel events per BX:
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   // Actual digi occupancy in a FED compared to average digi occupancy per FED
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         //cout<<"\t BPIX i: "<<i<<" , "<<nBPIXDigis<<" , "<<averageBPIXFed<<" , "<<nDigisPerFed[i]<<" , "<<averageOcc<<endl;
00477       }else{
00478         float averageFPIXFed = float(nFPIXDigis)/8.;
00479         if(averageFPIXFed>0.) averageOcc = nDigisPerFed[i]/averageFPIXFed;
00480         //cout<<"\t FPIX i: "<<i<<" , "<<nFPIXDigis<<" , "<<averageFPIXFed<<" , "<<nDigisPerFed[i]<<" , "<<averageOcc<<endl;
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         }//endif meX5
00488       }//endif modOn
00489     }
00490   }
00491   
00492   // slow down...
00493   if(slowDown) usleep(10000);
00494   
00495 }
00496 
00497 //------------------------------------------------------------------
00498 // Build data structure
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         // clutch to take all of FPIX, but no BPIX:
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 // Book MEs
00562 //------------------------------------------------------------------
00563 void SiPixelDigiSource::bookMEs(){
00564   
00565   // Get DQM interface
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 //define this as a plug-in
00741 DEFINE_FWK_MODULE(SiPixelDigiSource);