CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Validation/GlobalDigis/src/GlobalDigisHistogrammer.cc

Go to the documentation of this file.
00001 
00010 #include "Validation/GlobalDigis/interface/GlobalDigisHistogrammer.h"
00011 #include "DQMServices/Core/interface/DQMStore.h"
00012 
00013 GlobalDigisHistogrammer::GlobalDigisHistogrammer(const edm::ParameterSet& iPSet) :
00014   fName(""), verbosity(0), frequency(0), label(""), getAllProvenances(false),
00015   printProvenanceInfo(false), theCSCStripPedestalSum(0),
00016   theCSCStripPedestalCount(0), count(0)
00017 {
00018   std::string MsgLoggerCat = "GlobalDigisHistogrammer_GlobalDigisHistogrammer";
00019 
00020   // get information from parameter set
00021   fName = iPSet.getUntrackedParameter<std::string>("Name");
00022   verbosity = iPSet.getUntrackedParameter<int>("Verbosity");
00023   frequency = iPSet.getUntrackedParameter<int>("Frequency");
00024   outputfile = iPSet.getParameter<std::string>("outputFile");
00025   doOutput = iPSet.getParameter<bool>("DoOutput");
00026   edm::ParameterSet m_Prov =
00027     iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup");
00028   getAllProvenances = 
00029     m_Prov.getUntrackedParameter<bool>("GetAllProvenances");
00030   printProvenanceInfo = 
00031     m_Prov.getUntrackedParameter<bool>("PrintProvenanceInfo");
00032 
00033   //get Labels to use to extract information
00034   GlobalDigisSrc_ = iPSet.getParameter<edm::InputTag>("GlobalDigisSrc");
00035   //ECalEBSrc_ = iPSet.getParameter<edm::InputTag>("ECalEBSrc");
00036   //ECalEESrc_ = iPSet.getParameter<edm::InputTag>("ECalEESrc");
00037   //ECalESSrc_ = iPSet.getParameter<edm::InputTag>("ECalESSrc");
00038   //HCalSrc_ = iPSet.getParameter<edm::InputTag>("HCalSrc");
00039   //SiStripSrc_ = iPSet.getParameter<edm::InputTag>("SiStripSrc"); 
00040   //SiPxlSrc_ = iPSet.getParameter<edm::InputTag>("SiPxlSrc");
00041   //MuDTSrc_ = iPSet.getParameter<edm::InputTag>("MuDTSrc");
00042   //MuCSCStripSrc_ = iPSet.getParameter<edm::InputTag>("MuCSCStripSrc");
00043   //MuCSCWireSrc_ = iPSet.getParameter<edm::InputTag>("MuCSCWireSrc");
00044 
00045   // use value of first digit to determine default output level (inclusive)
00046   // 0 is none, 1 is basic, 2 is fill output, 3 is gather output
00047   verbosity %= 10;
00048 
00049   // create persistent object
00050   //produces<PGlobalDigi>(label);
00051 
00052   // print out Parameter Set information being used
00053   if (verbosity >= 0) {
00054     edm::LogInfo(MsgLoggerCat) 
00055       << "\n===============================\n"
00056       << "Initialized as EDHistogrammer with parameter values:\n"
00057       << "    Name          = " << fName << "\n"
00058       << "    Verbosity     = " << verbosity << "\n"
00059       << "    Frequency     = " << frequency << "\n"
00060       << "    OutputFile    = " << outputfile << "\n"
00061       << "    DoOutput      = " << doOutput << "\n"
00062       << "    GetProv       = " << getAllProvenances << "\n"
00063       << "    PrintProv     = " << printProvenanceInfo << "\n"
00064       << "    Global Src    = " << GlobalDigisSrc_ << "\n"
00065 
00066       << "===============================\n";
00067   }
00068 
00069   //Put in analyzer stuff here.... Pasted from Rec Hits... 
00070 
00071   dbe = 0;
00072 dbe = edm::Service<DQMStore>().operator->();
00073 if (dbe) {
00074     if (verbosity > 0 ) {
00075       dbe->setVerbose(1);
00076     } else {
00077       dbe->setVerbose(0);
00078     }
00079 }
00080 if (dbe) {
00081     if (verbosity > 0 ) dbe->showDirStructure();
00082   }
00083 
00084  Char_t hname[100];
00085  Char_t htitle[100];
00086  
00087 //monitor elements 
00088 
00089 //Si Strip  ***Done***
00090  if(dbe)
00091    {
00092 std::string SiStripString[19] = {"TECW1", "TECW2", "TECW3", "TECW4", "TECW5", "TECW6", "TECW7", "TECW8", "TIBL1", "TIBL2", "TIBL3", "TIBL4", "TIDW1", "TIDW2", "TIDW3", "TOBL1", "TOBL2", "TOBL3", "TOBL4"};
00093 for(int i = 0; i<19; ++i)
00094 {
00095   mehSiStripn[i]=0;
00096   mehSiStripADC[i]=0;
00097   mehSiStripStrip[i]=0;
00098 }
00099  std::string hcharname, hchartitle;
00100 dbe->setCurrentFolder("GlobalDigisV/SiStrips");
00101 for(int amend = 0; amend < 19; ++amend)
00102 { 
00103   hcharname = "hSiStripn_"+SiStripString[amend];
00104   hchartitle= SiStripString[amend]+"  Digis";
00105   sprintf(hname, hcharname.c_str());
00106   sprintf(htitle, hchartitle.c_str());
00107   mehSiStripn[amend] = dbe->book1D(hname,htitle,500,0.,1000.);
00108   mehSiStripn[amend]->setAxisTitle("Number of Digis",1);
00109   mehSiStripn[amend]->setAxisTitle("Count",2);
00110   hcharname = "hSiStripADC_"+SiStripString[amend];
00111   hchartitle= SiStripString[amend]+" ADC";
00112   sprintf(hname, hcharname.c_str());
00113   sprintf(htitle, hchartitle.c_str());
00114   mehSiStripADC[amend] = dbe->book1D(hname,htitle,150,0.0,300.);
00115   mehSiStripADC[amend]->setAxisTitle("ADC",1);
00116   mehSiStripADC[amend]->setAxisTitle("Count",2);
00117   hcharname = "hSiStripStripADC_"+SiStripString[amend];
00118   hchartitle= SiStripString[amend]+" Strip";
00119   sprintf(hname, hcharname.c_str());
00120   sprintf(htitle, hchartitle.c_str());
00121   mehSiStripStrip[amend] = dbe->book1D(hname,htitle,200,0.0,800.);
00122   mehSiStripStrip[amend]->setAxisTitle("Strip Number",1);
00123   mehSiStripStrip[amend]->setAxisTitle("Count",2);
00124 }
00125 
00126 
00127 //HCal  **DONE**
00128 std::string HCalString[4] = {"HB", "HE", "HO","HF"}; 
00129 float calnUpper[4] = {3000.,3000.,3000.,2000.}; float calnLower[4]={2000.,2000.,2000.,1000.}; 
00130 float SHEUpper[4]={0.05,.05,0.05,20};
00131 float SHEvAEEUpper[4] = {5000, 5000, 5000, 20}; float SHEvAEELower[4] = {-5000, -5000, -5000, -20}; 
00132 int SHEvAEEnBins[4] = {200,200,200,40};
00133 double ProfileUpper[4] = {1.,1.,1.,20.};  
00134 
00135 for(int i =0; i<4; ++i)
00136 {
00137   mehHcaln[i]=0;
00138   mehHcalAEE[i]=0;
00139   mehHcalSHE[i]=0;
00140   mehHcalAEESHE[i]=0;
00141   mehHcalSHEvAEE[i]=0;
00142 }
00143 dbe->setCurrentFolder("GlobalDigisV/HCals");
00144  
00145 for(int amend = 0; amend < 4; ++amend)
00146 {
00147   hcharname = "hHcaln_"+HCalString[amend];
00148   hchartitle= HCalString[amend]+"  digis";
00149   sprintf(hname, hcharname.c_str());
00150   sprintf(htitle, hchartitle.c_str());
00151   mehHcaln[amend] = dbe->book1D(hname,htitle, 1000, calnLower[amend], calnUpper[amend]);
00152   mehHcaln[amend]->setAxisTitle("Number of Digis",1);
00153   mehHcaln[amend]->setAxisTitle("Count",2);
00154   hcharname = "hHcalAEE_"+HCalString[amend];
00155   hchartitle= HCalString[amend]+"Cal AEE";
00156   sprintf(hname, hcharname.c_str());
00157   sprintf(htitle, hchartitle.c_str());
00158   mehHcalAEE[amend] = dbe->book1D(hname,htitle, 60, -10., 50.);
00159   mehHcalAEE[amend]->setAxisTitle("Analog Equivalent Energy",1);
00160   mehHcalAEE[amend]->setAxisTitle("Count",2);
00161   hcharname = "hHcalSHE_"+HCalString[amend];
00162   hchartitle= HCalString[amend]+"Cal SHE";
00163   sprintf(hname, hcharname.c_str());
00164   sprintf(htitle, hchartitle.c_str());
00165   mehHcalSHE[amend] = dbe->book1D(hname,htitle, 100, 0.0, SHEUpper[amend]);
00166   mehHcalSHE[amend]->setAxisTitle("Simulated Hit Energy",1);
00167   mehHcalSHE[amend]->setAxisTitle("Count",2);
00168   hcharname = "hHcalAEESHE_"+HCalString[amend];
00169   hchartitle= HCalString[amend]+"Cal AEE/SHE";
00170   sprintf(hname, hcharname.c_str());
00171   sprintf(htitle, hchartitle.c_str());
00172   mehHcalAEESHE[amend] = dbe->book1D(hname, htitle, SHEvAEEnBins[amend], SHEvAEELower[amend], SHEvAEEUpper[amend]);
00173   mehHcalAEESHE[amend]->setAxisTitle("ADC / SHE",1);
00174   mehHcalAEESHE[amend]->setAxisTitle("Count",2);
00175   
00176   //************  Not sure how to do Profile ME **************
00177 
00178   hcharname = "hHcalSHEvAEE_"+HCalString[amend];
00179   hchartitle= HCalString[amend]+"Cal SHE vs. AEE";
00180   sprintf(hname, hcharname.c_str());
00181   sprintf(htitle, hchartitle.c_str());
00182   mehHcalSHEvAEE[amend] = dbe->bookProfile(hname,htitle, 60, (float)-10., (float)50., 100, (float)0., (float)ProfileUpper[amend],"");
00183   mehHcalSHEvAEE[amend]->setAxisTitle("AEE / SHE",1);
00184   mehHcalSHEvAEE[amend]->setAxisTitle("SHE",2);
00185 
00186 }
00187 
00188 
00189 
00190 
00191 //Ecal **Done **
00192 std::string ECalString[2] = {"EB","EE"}; 
00193 
00194 for(int i =0; i<2; ++i)
00195 {
00196   mehEcaln[i]=0;
00197   mehEcalAEE[i]=0;
00198   mehEcalSHE[i]=0;
00199   mehEcalMaxPos[i]=0;
00200   mehEcalMultvAEE[i]=0;
00201   mehEcalSHEvAEESHE[i]=0;
00202 }
00203 dbe->setCurrentFolder("GlobalDigisV/ECals");
00204  
00205 for(int amend = 0; amend < 2; ++amend)
00206 {
00207   hcharname = "hEcaln_"+ECalString[amend];
00208   hchartitle= ECalString[amend]+"  digis";
00209   sprintf(hname, hcharname.c_str());
00210   sprintf(htitle, hchartitle.c_str());
00211   mehEcaln[amend] = dbe->book1D(hname,htitle, 300, 1000., 4000.);
00212   mehEcaln[amend]->setAxisTitle("Number of Digis",1);
00213   mehEcaln[amend]->setAxisTitle("Count",2);
00214   hcharname = "hEcalAEE_"+ECalString[amend];
00215   hchartitle= ECalString[amend]+"Cal AEE";
00216   sprintf(hname, hcharname.c_str());
00217   sprintf(htitle, hchartitle.c_str());
00218   mehEcalAEE[amend] = dbe->book1D(hname,htitle, 100, 0., 1.);
00219   mehEcalAEE[amend]->setAxisTitle("Analog Equivalent Energy",1);
00220   mehEcalAEE[amend]->setAxisTitle("Count",2);
00221   hcharname = "hEcalSHE_"+ECalString[amend];
00222   hchartitle= ECalString[amend]+"Cal SHE";
00223   sprintf(hname, hcharname.c_str());
00224   sprintf(htitle, hchartitle.c_str());
00225   mehEcalSHE[amend] = dbe->book1D(hname,htitle, 50, 0., 5.);
00226   mehEcalSHE[amend]->setAxisTitle("Simulated Hit Energy",1);
00227   mehEcalSHE[amend]->setAxisTitle("Count",2);
00228   hcharname = "hEcalMaxPos_"+ECalString[amend];
00229   hchartitle= ECalString[amend]+"Cal MaxPos";
00230   sprintf(hname, hcharname.c_str());
00231   sprintf(htitle, hchartitle.c_str());
00232   mehEcalMaxPos[amend] = dbe->book1D(hname,htitle,10, 0., 10.);
00233   mehEcalMaxPos[amend]->setAxisTitle("Maximum Position",1);
00234   mehEcalMaxPos[amend]->setAxisTitle("Count",2);
00235   
00236   //************  Not sure how to do Profile ME **************
00237   hcharname = "hEcalSHEvAEESHE_"+ECalString[amend];
00238   hchartitle= ECalString[amend]+"Cal SHE vs. AEE/SHE";
00239   sprintf(hname, hcharname.c_str());
00240   sprintf(htitle, hchartitle.c_str());
00241   mehEcalSHEvAEESHE[amend] = dbe->bookProfile(hname,htitle,100, (float)0., (float)10., 50, (float)0., (float)5.,"");
00242   mehEcalSHEvAEESHE[amend]->setAxisTitle("AEE / SHE",1);
00243   mehEcalSHEvAEESHE[amend]->setAxisTitle("SHE",2);
00244   hcharname = "hEcalMultvAEE_"+ECalString[amend];
00245   hchartitle= ECalString[amend]+"Cal Multi vs. AEE";
00246   sprintf(hname, hcharname.c_str());
00247   sprintf(htitle, hchartitle.c_str());
00248   mehEcalMultvAEE[amend] = dbe->bookProfile(hname,htitle, 100, (float)0., (float)10., 400, (float)0., (float)4000.,"");
00249   mehEcalMultvAEE[amend]->setAxisTitle("Analog Equivalent Energy",1);
00250   mehEcalMultvAEE[amend]->setAxisTitle("Number of Digis",2);
00251 
00252 
00253 
00254 }
00255   mehEcaln[2] = 0;
00256   hcharname = "hEcaln_ES";
00257   hchartitle= "ESCAL  digis";
00258   sprintf(hname, hcharname.c_str());
00259   sprintf(htitle, hchartitle.c_str());
00260   mehEcaln[2] = dbe->book1D(hname,htitle, 100, 0., 500.);
00261   mehEcaln[2]->setAxisTitle("Number of Digis",1);
00262   mehEcaln[2]->setAxisTitle("Count",2);
00263   std::string ADCNumber[3] = {"0", "1", "2"};
00264   for(int i =0; i<3; ++i)
00265     {
00266       mehEScalADC[i] = 0;
00267       hcharname = "hEcalADC"+ADCNumber[i]+"_ES";
00268       hchartitle= "ESCAL  ADC"+ADCNumber[i];
00269       sprintf(hname, hcharname.c_str());
00270       sprintf(htitle, hchartitle.c_str());
00271       mehEScalADC[i] = dbe->book1D(hname,htitle, 150, 950., 1500.);
00272       mehEScalADC[i]->setAxisTitle("ADC"+ADCNumber[i],1);
00273       mehEScalADC[i]->setAxisTitle("Count",2);
00274 
00275     }
00276 
00277 //Si Pixels ***DONE***  
00278 std::string SiPixelString[7] = {"BRL1", "BRL2", "BRL3", "FWD1n", "FWD1p", "FWD2n", "FWD2p"};
00279 for(int j =0; j<7; ++j)
00280 {
00281   mehSiPixeln[j]=0;
00282   mehSiPixelADC[j]=0;
00283   mehSiPixelRow[j]=0;
00284   mehSiPixelCol[j]=0;
00285 }
00286 
00287 dbe->setCurrentFolder("GlobalDigisV/SiPixels");
00288 for(int amend = 0; amend < 7; ++amend)
00289 {
00290   hcharname = "hSiPixeln_"+SiPixelString[amend];
00291   hchartitle= SiPixelString[amend]+" Digis";
00292   sprintf(hname, hcharname.c_str());
00293   sprintf(htitle, hchartitle.c_str());
00294   if(amend<3) mehSiPixeln[amend] = dbe->book1D(hname,htitle,50,0.,100.);
00295   else mehSiPixeln[amend] = dbe->book1D(hname,htitle,25,0.,50.);
00296   mehSiPixeln[amend]->setAxisTitle("Number of Digis",1);
00297   mehSiPixeln[amend]->setAxisTitle("Count",2);
00298   hcharname = "hSiPixelADC_"+SiPixelString[amend];
00299   hchartitle= SiPixelString[amend]+" ADC";
00300   sprintf(hname, hcharname.c_str());
00301   sprintf(htitle, hchartitle.c_str());
00302   mehSiPixelADC[amend] = dbe->book1D(hname,htitle,150,0.0,300.);
00303   mehSiPixelADC[amend]->setAxisTitle("ADC",1);
00304   mehSiPixelADC[amend]->setAxisTitle("Count",2);
00305   hcharname = "hSiPixelRow_"+SiPixelString[amend];
00306   hchartitle= SiPixelString[amend]+" Row";
00307   sprintf(hname, hcharname.c_str());
00308   sprintf(htitle, hchartitle.c_str());
00309   mehSiPixelRow[amend] = dbe->book1D(hname,htitle,100,0.0,100.);
00310   mehSiPixelRow[amend]->setAxisTitle("Row Number",1);
00311   mehSiPixelRow[amend]->setAxisTitle("Count",2);
00312   hcharname = "hSiPixelColumn_"+SiPixelString[amend];
00313   hchartitle= SiPixelString[amend]+" Column";
00314   sprintf(hname, hcharname.c_str());
00315   sprintf(htitle, hchartitle.c_str());
00316   mehSiPixelCol[amend] = dbe->book1D(hname,htitle,200,0.0,500.);
00317   mehSiPixelCol[amend]->setAxisTitle("Column Number",1);
00318   mehSiPixelCol[amend]->setAxisTitle("Count",2);
00319 }
00320 //Muons ***DONE****
00321 dbe->setCurrentFolder("GlobalDigisV/Muons");
00322 std::string MuonString[4] = {"MB1", "MB2", "MB3", "MB4"};
00323 
00324 for(int i =0; i < 4; ++i)
00325 {
00326   mehDtMuonn[i] = 0;
00327   mehDtMuonLayer[i] = 0;
00328   mehDtMuonTime[i] = 0;
00329   mehDtMuonTimevLayer[i] = 0;
00330 }
00331 
00332 for(int j = 0; j < 4; ++j)
00333 {
00334   hcharname = "hDtMuonn_"+MuonString[j];
00335   hchartitle= MuonString[j]+"  digis";
00336   sprintf(hname,hcharname.c_str());
00337   sprintf(htitle,hchartitle.c_str());
00338   mehDtMuonn[j] = dbe->book1D(hname,htitle,25, 0., 50.);
00339   mehDtMuonn[j]->setAxisTitle("Number of Digis",1);
00340   mehDtMuonn[j]->setAxisTitle("Count",2);
00341   hcharname = "hDtLayer_"+MuonString[j];
00342   hchartitle= MuonString[j]+"  Layer";
00343   sprintf(hname,hcharname.c_str());
00344   sprintf(htitle,hchartitle.c_str());
00345   mehDtMuonLayer[j] = dbe->book1D(hname,htitle,12, 1., 13.);
00346   mehDtMuonLayer[j]->setAxisTitle("4 * (SuperLayer - 1) + Layer",1);
00347   mehDtMuonLayer[j]->setAxisTitle("Count",2);
00348   hcharname = "hDtMuonTime_"+MuonString[j];
00349   hchartitle= MuonString[j]+"  Time";
00350   sprintf(hname,hcharname.c_str());
00351   sprintf(htitle,hchartitle.c_str());
00352   mehDtMuonTime[j] = dbe->book1D(hname,htitle,300, 400., 1000.);
00353   mehDtMuonTime[j]->setAxisTitle("Time",1);
00354   mehDtMuonTime[j]->setAxisTitle("Count",2);
00355   hcharname = "hDtMuonTimevLayer_"+MuonString[j];
00356   hchartitle= MuonString[j]+"  Time vs. Layer";
00357   sprintf(hname,hcharname.c_str());
00358   sprintf(htitle,hchartitle.c_str());
00359   mehDtMuonTimevLayer[j] = dbe->bookProfile(hname,htitle,12, 1., 13., 300, 400., 1000.,"");
00360   mehDtMuonTimevLayer[j]->setAxisTitle("4 * (SuperLayer - 1) + Layer",1);
00361   mehDtMuonTimevLayer[j]->setAxisTitle("Time",2);
00362 }
00363 
00364 //  ****  Have to do CSC and RPC now *****
00365 //CSC 
00366 mehCSCStripn = 0;
00367 hcharname = "hCSCStripn";
00368 hchartitle = "CSC Strip digis";
00369 sprintf(hname,hcharname.c_str());
00370 sprintf(htitle,hchartitle.c_str());
00371 mehCSCStripn = dbe->book1D(hname,htitle,25, 0., 50.);
00372 mehCSCStripn->setAxisTitle("Number of Digis",1);
00373 mehCSCStripn->setAxisTitle("Count",2);
00374 
00375 mehCSCStripADC = 0;
00376 hcharname = "hCSCStripADC";
00377 hchartitle = "CSC Strip ADC";
00378 sprintf(hname,hcharname.c_str());
00379 sprintf(htitle,hchartitle.c_str());
00380 mehCSCStripADC = dbe->book1D(hname,htitle, 110, 0., 1100.);
00381 mehCSCStripADC->setAxisTitle("ADC",1);
00382 mehCSCStripADC->setAxisTitle("Count",2);
00383 
00384 mehCSCWiren = 0;
00385 hcharname = "hCSCWiren";
00386 hchartitle = "CSC Wire digis";
00387 sprintf(hname,hcharname.c_str());
00388 sprintf(htitle,hchartitle.c_str());
00389 mehCSCWiren = dbe->book1D(hname,htitle,25, 0., 50.);
00390 mehCSCWiren->setAxisTitle("Number of Digis",1);
00391 mehCSCWiren->setAxisTitle("Count",2);
00392 
00393 
00394 
00395 mehCSCWireTime = 0;
00396 hcharname = "hCSCWireTime";
00397 hchartitle = "CSC Wire Time";
00398 sprintf(hname,hcharname.c_str());
00399 sprintf(htitle,hchartitle.c_str());
00400 mehCSCWiren = dbe->book1D(hname,htitle,10, 0., 10.);
00401 mehCSCWiren->setAxisTitle("Time",1);
00402 mehCSCWiren->setAxisTitle("Count",2);
00403  
00404 
00405 }
00406 
00407 }
00408 
00409   // set default constants
00410   // ECal
00411 
00412   //ECalgainConv_[0] = 0.;
00413   //ECalgainConv_[1] = 1.;
00414   //ECalgainConv_[2] = 2.;
00415   //ECalgainConv_[3] = 12.;  
00416   //ECalbarrelADCtoGeV_ = 0.035;
00417   //ECalendcapADCtoGeV_ = 0.06;
00418 
00419 
00420 
00421 GlobalDigisHistogrammer::~GlobalDigisHistogrammer() 
00422 {
00423   if (doOutput)
00424     if (outputfile.size() != 0 && dbe) dbe->save(outputfile);
00425 }
00426 
00427 void GlobalDigisHistogrammer::beginJob( void )
00428 {
00429   std::string MsgLoggerCat = "GlobalDigisHistogrammer_beginJob";
00430 
00431   // setup calorimeter constants from service
00432   //edm::ESHandle<EcalADCToGeVConstant> pAgc;
00433   //iSetup.get<EcalADCToGeVConstantRcd>().get(pAgc);
00434   //const EcalADCToGeVConstant* agc = pAgc.product();
00435   
00436   //EcalMGPAGainRatio * defaultRatios = new EcalMGPAGainRatio();
00437 
00438   // ECalgainConv_[0] = 0.;
00439   // ECalgainConv_[1] = 1.;
00440   // // ECalgainConv_[2] = defaultRatios->gain12Over6() ;
00441   //ECalgainConv_[3] = ECalgainConv_[2]*(defaultRatios->gain6Over1()) ;
00442 
00443   //delete defaultRatios;
00444 
00445   //ECalbarrelADCtoGeV_ = agc->getEBValue();
00446   //ECalendcapADCtoGeV_ = agc->getEEValue();
00447 
00448   //if (verbosity >= 0) {
00449   // edm::LogInfo(MsgLoggerCat) 
00450   // << "Modified Calorimeter gain constants: g0 = " << ECalgainConv_[0]
00451   //<< ", g1 = " << ECalgainConv_[1] << ", g2 = " << ECalgainConv_[2]
00452   // << ", g3 = " << ECalgainConv_[3];
00453   // edm::LogInfo(MsgLoggerCat)
00454   //  << "Modified Calorimeter ADCtoGeV constants: barrel = " 
00455   //  << ECalbarrelADCtoGeV_ << ", endcap = " << ECalendcapADCtoGeV_;
00456   //}
00457 
00458   // clear storage vectors
00459   //clear();
00460   return;
00461 }
00462 
00463 void GlobalDigisHistogrammer::endJob()
00464 {
00465   std::string MsgLoggerCat = "GlobalDigisHistogrammer_endJob";
00466   if (verbosity >= 0)
00467     edm::LogInfo(MsgLoggerCat) 
00468       << "Terminating having processed " << count << " events.";
00469   return;
00470 }
00471 
00472 void GlobalDigisHistogrammer::analyze(const edm::Event& iEvent, 
00473                                   const edm::EventSetup& iSetup)
00474 {
00475   std::string MsgLoggerCat = "GlobalDigisHistogrammer_analyze";
00476 
00477   // keep track of number of events processed
00478   ++count;
00479 
00480   // get event id information
00481   int nrun = iEvent.id().run();
00482   int nevt = iEvent.id().event();
00483 
00484   if (verbosity > 0) {
00485     edm::LogInfo(MsgLoggerCat)
00486       << "Processing run " << nrun << ", event " << nevt
00487       << " (" << count << " events total)";
00488   } else if (verbosity == 0) {
00489     if (nevt%frequency == 0 || nevt == 1) {
00490       edm::LogInfo(MsgLoggerCat)
00491         << "Processing run " << nrun << ", event " << nevt
00492         << " (" << count << " events total)";
00493     }
00494   }
00495 
00496   // clear event holders
00497   //clear();
00498 
00499   // look at information available in the event
00500   if (getAllProvenances) {
00501 
00502     std::vector<const edm::Provenance*> AllProv;
00503     iEvent.getAllProvenance(AllProv);
00504 
00505     if (verbosity >= 0)
00506       edm::LogInfo(MsgLoggerCat)
00507         << "Number of Provenances = " << AllProv.size();
00508 
00509     if (printProvenanceInfo && (verbosity >= 0)) {
00510       TString eventout("\nProvenance info:\n");      
00511 
00512       for (unsigned int i = 0; i < AllProv.size(); ++i) {
00513         eventout += "\n       ******************************";
00514         eventout += "\n       Module       : ";
00515         //eventout += (AllProv[i]->product).moduleLabel();
00516         eventout += AllProv[i]->moduleLabel();
00517         eventout += "\n       ProductID    : ";
00518         //eventout += (AllProv[i]->product).productID_.id_;
00519         eventout += AllProv[i]->productID().id();
00520         eventout += "\n       ClassName    : ";
00521         //eventout += (AllProv[i]->product).fullClassName_;
00522         eventout += AllProv[i]->className();
00523         eventout += "\n       InstanceName : ";
00524         //eventout += (AllProv[i]->product).productInstanceName_;
00525         eventout += AllProv[i]->productInstanceName();
00526         eventout += "\n       BranchName   : ";
00527         //eventout += (AllProv[i]->product).branchName_;
00528         eventout += AllProv[i]->branchName();
00529       }
00530       eventout += "\n       ******************************\n";
00531       edm::LogInfo(MsgLoggerCat) << eventout << "\n";
00532       printProvenanceInfo = false;
00533       getAllProvenances = false;
00534     }
00535 edm::Handle<PGlobalDigi> srcGlobalDigis;
00536   iEvent.getByLabel(GlobalDigisSrc_,srcGlobalDigis);
00537   if (!srcGlobalDigis.isValid()) {
00538     edm::LogWarning(MsgLoggerCat)
00539       << "Unable to find PGlobalDigis in event!";
00540     return;
00541 
00542   }
00543 
00544     
00545 
00546     int nEBCalDigis = srcGlobalDigis->getnEBCalDigis();
00547     int nEECalDigis = srcGlobalDigis->getnEECalDigis();
00548     int nESCalDigis = srcGlobalDigis->getnESCalDigis();
00549 
00550     int nHBCalDigis = srcGlobalDigis->getnHBCalDigis();
00551     int nHECalDigis = srcGlobalDigis->getnHECalDigis();
00552     int nHOCalDigis = srcGlobalDigis->getnHOCalDigis();
00553     int nHFCalDigis = srcGlobalDigis->getnHFCalDigis();        
00554 
00555     int nTIBL1Digis = srcGlobalDigis->getnTIBL1Digis();    
00556     int nTIBL2Digis = srcGlobalDigis->getnTIBL2Digis();    
00557     int nTIBL3Digis = srcGlobalDigis->getnTIBL3Digis();    
00558     int nTIBL4Digis = srcGlobalDigis->getnTIBL4Digis();    
00559     int nTOBL1Digis = srcGlobalDigis->getnTOBL1Digis();    
00560     int nTOBL2Digis = srcGlobalDigis->getnTOBL2Digis();    
00561     int nTOBL3Digis = srcGlobalDigis->getnTOBL3Digis();    
00562     int nTOBL4Digis = srcGlobalDigis->getnTOBL4Digis();    
00563     int nTIDW1Digis = srcGlobalDigis->getnTIDW1Digis();    
00564     int nTIDW2Digis = srcGlobalDigis->getnTIDW2Digis();    
00565     int nTIDW3Digis = srcGlobalDigis->getnTIDW3Digis();    
00566     int nTECW1Digis = srcGlobalDigis->getnTECW1Digis();    
00567     int nTECW2Digis = srcGlobalDigis->getnTECW2Digis();    
00568     int nTECW3Digis = srcGlobalDigis->getnTECW3Digis();  
00569     int nTECW4Digis = srcGlobalDigis->getnTECW4Digis();    
00570     int nTECW5Digis = srcGlobalDigis->getnTECW5Digis();    
00571     int nTECW6Digis = srcGlobalDigis->getnTECW6Digis();  
00572     int nTECW7Digis = srcGlobalDigis->getnTECW7Digis();    
00573     int nTECW8Digis = srcGlobalDigis->getnTECW8Digis();
00574 
00575     int nBRL1Digis = srcGlobalDigis->getnBRL1Digis();    
00576     int nBRL2Digis = srcGlobalDigis->getnBRL2Digis();    
00577     int nBRL3Digis = srcGlobalDigis->getnBRL3Digis();       
00578     int nFWD1nDigis = srcGlobalDigis->getnFWD1nDigis();
00579     int nFWD1pDigis = srcGlobalDigis->getnFWD1pDigis();    
00580     int nFWD2nDigis = srcGlobalDigis->getnFWD2nDigis();    
00581     int nFWD2pDigis = srcGlobalDigis->getnFWD2pDigis(); 
00582   
00583     int nMB1Digis = srcGlobalDigis->getnMB1Digis();  
00584     int nMB2Digis = srcGlobalDigis->getnMB2Digis();  
00585     int nMB3Digis = srcGlobalDigis->getnMB3Digis();  
00586     int nMB4Digis = srcGlobalDigis->getnMB4Digis();  
00587 
00588     int nCSCstripDigis = srcGlobalDigis->getnCSCstripDigis();
00589 
00590     int nCSCwireDigis = srcGlobalDigis->getnCSCwireDigis();
00591 
00592   // get Ecal info
00593     std::vector<PGlobalDigi::ECalDigi> EECalDigis = 
00594       srcGlobalDigis->getEECalDigis();
00595     mehEcaln[0]->Fill((float)nEECalDigis);
00596     for (unsigned int i = 0; i < EECalDigis.size(); ++i) {
00597       mehEcalAEE[0]->Fill(EECalDigis[i].AEE);
00598       mehEcalMaxPos[0]->Fill(EECalDigis[i].maxPos);
00599       mehEcalMultvAEE[0]->Fill(EECalDigis[i].AEE,(float)nEECalDigis,1);
00600       if (EECalDigis[i].SHE != 0.) {
00601         mehEcalSHE[0]->Fill(EECalDigis[i].SHE);
00602         mehEcalSHEvAEESHE[0]->
00603           Fill(EECalDigis[i].AEE/EECalDigis[i].SHE,EECalDigis[i].SHE,1);
00604       }
00605     }
00606     
00607     std::vector<PGlobalDigi::ECalDigi> EBCalDigis = 
00608       srcGlobalDigis->getEBCalDigis();
00609     mehEcaln[1]->Fill((float)nEBCalDigis);
00610     for (unsigned int i = 0; i < EBCalDigis.size(); ++i) {
00611       mehEcalAEE[1]->Fill(EBCalDigis[i].AEE);
00612       mehEcalMaxPos[1]->Fill(EBCalDigis[i].maxPos);
00613       mehEcalMultvAEE[1]->Fill(EBCalDigis[i].AEE,(float)nEBCalDigis,1);
00614       if (EBCalDigis[i].SHE != 0.) {
00615         mehEcalSHE[1]->Fill(EBCalDigis[i].SHE);
00616         mehEcalSHEvAEESHE[1]->
00617           Fill(EBCalDigis[i].AEE/EBCalDigis[i].SHE,EBCalDigis[i].SHE,1);
00618       }
00619     }
00620     
00621     std::vector<PGlobalDigi::ESCalDigi> ESCalDigis = 
00622       srcGlobalDigis->getESCalDigis();   
00623     mehEcaln[2]->Fill((float)nESCalDigis);
00624     for (unsigned int i = 0; i < ESCalDigis.size(); ++i) {
00625       mehEScalADC[0]->Fill(ESCalDigis[i].ADC0);
00626       mehEScalADC[1]->Fill(ESCalDigis[i].ADC1);
00627       mehEScalADC[2]->Fill(ESCalDigis[i].ADC2);
00628     }
00629     
00630     // Get HCal info
00631     std::vector<PGlobalDigi::HCalDigi> HBCalDigis = 
00632       srcGlobalDigis->getHBCalDigis();
00633     mehHcaln[0]->Fill((float)nHBCalDigis);
00634     for (unsigned int i = 0; i < HBCalDigis.size(); ++i) {
00635       mehHcalAEE[0]->Fill(HBCalDigis[i].AEE);
00636       if (HBCalDigis[i].SHE != 0.) {
00637         mehHcalSHE[0]->Fill(HBCalDigis[i].SHE);
00638         mehHcalAEESHE[0]->Fill(HBCalDigis[i].AEE/HBCalDigis[i].SHE);
00639         mehHcalSHEvAEE[0]->
00640           Fill(HBCalDigis[i].AEE,HBCalDigis[i].SHE,1);
00641       }
00642     }
00643     std::vector<PGlobalDigi::HCalDigi> HECalDigis = 
00644       srcGlobalDigis->getHECalDigis();
00645     mehHcaln[1]->Fill((float)nHECalDigis);
00646     for (unsigned int i = 0; i < HECalDigis.size(); ++i) {
00647       mehHcalAEE[1]->Fill(HECalDigis[i].AEE);
00648       if (HECalDigis[i].SHE != 0.) {
00649         mehHcalSHE[1]->Fill(HECalDigis[i].SHE);
00650         mehHcalAEESHE[1]->Fill(HECalDigis[i].AEE/HECalDigis[i].SHE);
00651         mehHcalSHEvAEE[1]->
00652           Fill(HECalDigis[i].AEE,HECalDigis[i].SHE,1);
00653       }
00654     }
00655 
00656     std::vector<PGlobalDigi::HCalDigi> HOCalDigis = 
00657       srcGlobalDigis->getHOCalDigis();
00658     mehHcaln[2]->Fill((float)nHOCalDigis);
00659     for (unsigned int i = 0; i < HOCalDigis.size(); ++i) {
00660       mehHcalAEE[2]->Fill(HOCalDigis[i].AEE);
00661       if (HOCalDigis[i].SHE != 0.) {
00662         mehHcalSHE[2]->Fill(HOCalDigis[i].SHE);
00663         mehHcalAEESHE[2]->Fill(HOCalDigis[i].AEE/HOCalDigis[i].SHE);
00664         mehHcalSHEvAEE[2]->
00665           Fill(HOCalDigis[i].AEE,HOCalDigis[i].SHE,1);
00666       }
00667     }
00668 
00669     std::vector<PGlobalDigi::HCalDigi> HFCalDigis = 
00670       srcGlobalDigis->getHFCalDigis();
00671     mehHcaln[3]->Fill((float)nHFCalDigis);
00672     for (unsigned int i = 0; i < HFCalDigis.size(); ++i) {
00673       mehHcalAEE[3]->Fill(HFCalDigis[i].AEE);
00674       if (HFCalDigis[i].SHE != 0.) {
00675         mehHcalSHE[3]->Fill(HFCalDigis[i].SHE);
00676         mehHcalAEESHE[3]->Fill(HFCalDigis[i].AEE/HFCalDigis[i].SHE);
00677         mehHcalSHEvAEE[3]->
00678           Fill(HFCalDigis[i].AEE,HFCalDigis[i].SHE,1);
00679       }
00680     }
00681 
00682     // get SiStrip info
00683     std::vector<PGlobalDigi::SiStripDigi> TIBL1Digis =
00684       srcGlobalDigis->getTIBL1Digis();      
00685     mehSiStripn[0]->Fill((float)nTIBL1Digis);
00686     for (unsigned int i = 0; i < TIBL1Digis.size(); ++i) {
00687       mehSiStripADC[0]->Fill(TIBL1Digis[i].ADC);
00688       mehSiStripStrip[0]->Fill(TIBL1Digis[i].STRIP);
00689     }
00690 
00691     std::vector<PGlobalDigi::SiStripDigi> TIBL2Digis =
00692       srcGlobalDigis->getTIBL2Digis();      
00693     mehSiStripn[1]->Fill((float)nTIBL2Digis);
00694     for (unsigned int i = 0; i < TIBL2Digis.size(); ++i) {
00695       mehSiStripADC[1]->Fill(TIBL2Digis[i].ADC);
00696       mehSiStripStrip[1]->Fill(TIBL2Digis[i].STRIP);
00697     }
00698 
00699     std::vector<PGlobalDigi::SiStripDigi> TIBL3Digis =
00700       srcGlobalDigis->getTIBL3Digis();      
00701     mehSiStripn[2]->Fill((float)nTIBL3Digis);
00702     for (unsigned int i = 0; i < TIBL3Digis.size(); ++i) {
00703       mehSiStripADC[2]->Fill(TIBL3Digis[i].ADC);
00704       mehSiStripStrip[2]->Fill(TIBL3Digis[i].STRIP);
00705     }
00706 
00707     std::vector<PGlobalDigi::SiStripDigi> TIBL4Digis =
00708       srcGlobalDigis->getTIBL4Digis();      
00709     mehSiStripn[3]->Fill((float)nTIBL4Digis);
00710     for (unsigned int i = 0; i < TIBL4Digis.size(); ++i) {
00711       mehSiStripADC[3]->Fill(TIBL4Digis[i].ADC);
00712       mehSiStripStrip[3]->Fill(TIBL4Digis[i].STRIP);
00713     }
00714 
00715     std::vector<PGlobalDigi::SiStripDigi> TOBL1Digis =
00716       srcGlobalDigis->getTOBL1Digis();      
00717     mehSiStripn[4]->Fill((float)nTOBL1Digis);
00718     for (unsigned int i = 0; i < TOBL1Digis.size(); ++i) {
00719       mehSiStripADC[4]->Fill(TOBL1Digis[i].ADC);
00720       mehSiStripStrip[4]->Fill(TOBL1Digis[i].STRIP);
00721     }
00722 
00723     std::vector<PGlobalDigi::SiStripDigi> TOBL2Digis =
00724       srcGlobalDigis->getTOBL2Digis();      
00725     mehSiStripn[5]->Fill((float)nTOBL2Digis);
00726     for (unsigned int i = 0; i < TOBL2Digis.size(); ++i) {
00727       mehSiStripADC[5]->Fill(TOBL2Digis[i].ADC);
00728       mehSiStripStrip[5]->Fill(TOBL2Digis[i].STRIP);
00729     }
00730 
00731     std::vector<PGlobalDigi::SiStripDigi> TOBL3Digis =
00732       srcGlobalDigis->getTOBL3Digis();      
00733     mehSiStripn[6]->Fill((float)nTOBL3Digis);
00734     for (unsigned int i = 0; i < TOBL3Digis.size(); ++i) {
00735       mehSiStripADC[6]->Fill(TOBL3Digis[i].ADC);
00736       mehSiStripStrip[6]->Fill(TOBL3Digis[i].STRIP);
00737     }
00738 
00739     std::vector<PGlobalDigi::SiStripDigi> TOBL4Digis =
00740       srcGlobalDigis->getTOBL4Digis();      
00741     mehSiStripn[7]->Fill((float)nTOBL4Digis);
00742     for (unsigned int i = 0; i < TOBL4Digis.size(); ++i) {
00743       mehSiStripADC[7]->Fill(TOBL4Digis[i].ADC);
00744       mehSiStripStrip[7]->Fill(TOBL4Digis[i].STRIP);
00745     }
00746 
00747     std::vector<PGlobalDigi::SiStripDigi> TIDW1Digis =
00748       srcGlobalDigis->getTIDW1Digis();      
00749     mehSiStripn[8]->Fill((float)nTIDW1Digis);
00750     for (unsigned int i = 0; i < TIDW1Digis.size(); ++i) {
00751       mehSiStripADC[8]->Fill(TIDW1Digis[i].ADC);
00752       mehSiStripStrip[8]->Fill(TIDW1Digis[i].STRIP);
00753     }
00754 
00755     std::vector<PGlobalDigi::SiStripDigi> TIDW2Digis =
00756       srcGlobalDigis->getTIDW2Digis();      
00757     mehSiStripn[9]->Fill((float)nTIDW2Digis);
00758     for (unsigned int i = 0; i < TIDW2Digis.size(); ++i) {
00759       mehSiStripADC[9]->Fill(TIDW2Digis[i].ADC);
00760       mehSiStripStrip[9]->Fill(TIDW2Digis[i].STRIP);
00761     }
00762 
00763     std::vector<PGlobalDigi::SiStripDigi> TIDW3Digis =
00764       srcGlobalDigis->getTIDW3Digis();      
00765     mehSiStripn[10]->Fill((float)nTIDW3Digis);
00766     for (unsigned int i = 0; i < TIDW3Digis.size(); ++i) {
00767       mehSiStripADC[10]->Fill(TIDW3Digis[i].ADC);
00768       mehSiStripStrip[10]->Fill(TIDW3Digis[i].STRIP);
00769     }
00770 
00771     std::vector<PGlobalDigi::SiStripDigi> TECW1Digis =
00772       srcGlobalDigis->getTECW1Digis();      
00773     mehSiStripn[11]->Fill((float)nTECW1Digis);
00774     for (unsigned int i = 0; i < TECW1Digis.size(); ++i) {
00775       mehSiStripADC[11]->Fill(TECW1Digis[i].ADC);
00776       mehSiStripStrip[11]->Fill(TECW1Digis[i].STRIP);
00777     }
00778 
00779     std::vector<PGlobalDigi::SiStripDigi> TECW2Digis =
00780       srcGlobalDigis->getTECW2Digis();      
00781     mehSiStripn[12]->Fill((float)nTECW2Digis);
00782     for (unsigned int i = 0; i < TECW2Digis.size(); ++i) {
00783       mehSiStripADC[12]->Fill(TECW2Digis[i].ADC);
00784       mehSiStripStrip[12]->Fill(TECW2Digis[i].STRIP);
00785     }
00786 
00787     std::vector<PGlobalDigi::SiStripDigi> TECW3Digis =
00788       srcGlobalDigis->getTECW3Digis();      
00789     mehSiStripn[13]->Fill((float)nTECW3Digis);
00790     for (unsigned int i = 0; i < TECW3Digis.size(); ++i) {
00791       mehSiStripADC[13]->Fill(TECW3Digis[i].ADC);
00792       mehSiStripStrip[13]->Fill(TECW3Digis[i].STRIP);
00793     }
00794 
00795     std::vector<PGlobalDigi::SiStripDigi> TECW4Digis =
00796       srcGlobalDigis->getTECW4Digis();      
00797     mehSiStripn[14]->Fill((float)nTECW4Digis);
00798     for (unsigned int i = 0; i < TECW4Digis.size(); ++i) {
00799       mehSiStripADC[14]->Fill(TECW4Digis[i].ADC);
00800       mehSiStripStrip[14]->Fill(TECW4Digis[i].STRIP);
00801     }
00802 
00803     std::vector<PGlobalDigi::SiStripDigi> TECW5Digis =
00804       srcGlobalDigis->getTECW5Digis();      
00805     mehSiStripn[15]->Fill((float)nTECW5Digis);
00806     for (unsigned int i = 0; i < TECW5Digis.size(); ++i) {
00807       mehSiStripADC[15]->Fill(TECW5Digis[i].ADC);
00808       mehSiStripStrip[15]->Fill(TECW5Digis[i].STRIP);
00809     }
00810 
00811     std::vector<PGlobalDigi::SiStripDigi> TECW6Digis =
00812       srcGlobalDigis->getTECW6Digis();      
00813     mehSiStripn[16]->Fill((float)nTECW6Digis);
00814     for (unsigned int i = 0; i < TECW6Digis.size(); ++i) {
00815       mehSiStripADC[16]->Fill(TECW6Digis[i].ADC);
00816       mehSiStripStrip[16]->Fill(TECW6Digis[i].STRIP);
00817     }
00818 
00819     std::vector<PGlobalDigi::SiStripDigi> TECW7Digis =
00820       srcGlobalDigis->getTECW7Digis();      
00821     mehSiStripn[17]->Fill((float)nTECW7Digis);
00822     for (unsigned int i = 0; i < TECW7Digis.size(); ++i) {
00823       mehSiStripADC[17]->Fill(TECW7Digis[i].ADC);
00824       mehSiStripStrip[17]->Fill(TECW7Digis[i].STRIP);
00825     }
00826 
00827     std::vector<PGlobalDigi::SiStripDigi> TECW8Digis =
00828       srcGlobalDigis->getTECW8Digis();      
00829     mehSiStripn[18]->Fill((float)nTECW8Digis);
00830     for (unsigned int i = 0; i < TECW8Digis.size(); ++i) {
00831       mehSiStripADC[18]->Fill(TECW8Digis[i].ADC);
00832       mehSiStripStrip[18]->Fill(TECW8Digis[i].STRIP);
00833     }
00834 
00835     // get SiPixel info
00836     std::vector<PGlobalDigi::SiPixelDigi> BRL1Digis =
00837       srcGlobalDigis->getBRL1Digis();      
00838     mehSiPixeln[0]->Fill((float)nBRL1Digis);
00839     for (unsigned int i = 0; i < BRL1Digis.size(); ++i) {
00840       mehSiPixelADC[0]->Fill(BRL1Digis[i].ADC);
00841       mehSiPixelRow[0]->Fill(BRL1Digis[i].ROW);
00842       mehSiPixelCol[0]->Fill(BRL1Digis[i].COLUMN);
00843     }
00844 
00845     std::vector<PGlobalDigi::SiPixelDigi> BRL2Digis =
00846       srcGlobalDigis->getBRL2Digis();      
00847     mehSiPixeln[1]->Fill((float)nBRL2Digis);
00848     for (unsigned int i = 0; i < BRL2Digis.size(); ++i) {
00849       mehSiPixelADC[1]->Fill(BRL2Digis[i].ADC);
00850       mehSiPixelRow[1]->Fill(BRL2Digis[i].ROW);
00851       mehSiPixelCol[1]->Fill(BRL2Digis[i].COLUMN);
00852     }
00853 
00854     std::vector<PGlobalDigi::SiPixelDigi> BRL3Digis =
00855       srcGlobalDigis->getBRL3Digis();      
00856     mehSiPixeln[2]->Fill((float)nBRL3Digis);
00857     for (unsigned int i = 0; i < BRL3Digis.size(); ++i) {
00858       mehSiPixelADC[2]->Fill(BRL3Digis[i].ADC);
00859       mehSiPixelRow[2]->Fill(BRL3Digis[i].ROW);
00860       mehSiPixelCol[2]->Fill(BRL3Digis[i].COLUMN); 
00861    }
00862 
00863     std::vector<PGlobalDigi::SiPixelDigi> FWD1pDigis =
00864       srcGlobalDigis->getFWD1pDigis();      
00865     mehSiPixeln[3]->Fill((float)nFWD1pDigis);
00866     for (unsigned int i = 0; i < FWD1pDigis.size(); ++i) {
00867       mehSiPixelADC[3]->Fill(FWD1pDigis[i].ADC);
00868       mehSiPixelRow[3]->Fill(FWD1pDigis[i].ROW);
00869       mehSiPixelCol[3]->Fill(FWD1pDigis[i].COLUMN);
00870     }
00871 
00872     std::vector<PGlobalDigi::SiPixelDigi> FWD1nDigis =
00873       srcGlobalDigis->getFWD1nDigis();      
00874     mehSiPixeln[4]->Fill((float)nFWD1nDigis);
00875     for (unsigned int i = 0; i < FWD1nDigis.size(); ++i) {
00876       mehSiPixelADC[4]->Fill(FWD1nDigis[i].ADC);
00877       mehSiPixelRow[4]->Fill(FWD1nDigis[i].ROW);
00878       mehSiPixelCol[4]->Fill(FWD1nDigis[i].COLUMN);
00879     }
00880 
00881     std::vector<PGlobalDigi::SiPixelDigi> FWD2pDigis =
00882       srcGlobalDigis->getFWD2pDigis();      
00883     mehSiPixeln[5]->Fill((float)nFWD2pDigis);
00884     for (unsigned int i = 0; i < FWD2pDigis.size(); ++i) {
00885       mehSiPixelADC[5]->Fill(FWD2pDigis[i].ADC);
00886       mehSiPixelRow[5]->Fill(FWD2pDigis[i].ROW);
00887       mehSiPixelCol[5]->Fill(FWD2pDigis[i].COLUMN);
00888     }
00889 
00890     std::vector<PGlobalDigi::SiPixelDigi> FWD2nDigis =
00891       srcGlobalDigis->getFWD2nDigis();      
00892     mehSiPixeln[6]->Fill((float)nFWD2nDigis);
00893     for (unsigned int i = 0; i < FWD2nDigis.size(); ++i) {
00894       mehSiPixelADC[6]->Fill(FWD2nDigis[i].ADC);
00895       mehSiPixelRow[6]->Fill(FWD2nDigis[i].ROW);
00896       mehSiPixelCol[6]->Fill(FWD2nDigis[i].COLUMN);
00897     }
00898 
00899     // get DtMuon info
00900     std::vector<PGlobalDigi::DTDigi> MB1Digis =
00901       srcGlobalDigis->getMB1Digis();      
00902     mehDtMuonn[0]->Fill((float)nMB1Digis);
00903     for (unsigned int i = 0; i < MB1Digis.size(); ++i) {
00904       float layer = 4.0 * (MB1Digis[i].SLAYER - 1.0) + MB1Digis[i].LAYER;
00905       mehDtMuonLayer[0]->Fill(layer);
00906       mehDtMuonTime[0]->Fill(MB1Digis[i].TIME);
00907       mehDtMuonTimevLayer[0]->Fill(layer,MB1Digis[i].TIME,1);
00908     }
00909 
00910     std::vector<PGlobalDigi::DTDigi> MB2Digis =
00911       srcGlobalDigis->getMB2Digis();      
00912     mehDtMuonn[1]->Fill((float)nMB2Digis);
00913     for (unsigned int i = 0; i < MB2Digis.size(); ++i) {
00914       float layer = 4.0 * (MB2Digis[i].SLAYER - 1.0) + MB2Digis[i].LAYER;
00915       mehDtMuonLayer[1]->Fill(layer);
00916       mehDtMuonTime[1]->Fill(MB2Digis[i].TIME);
00917       mehDtMuonTimevLayer[1]->Fill(layer,MB2Digis[i].TIME,1);
00918     }
00919 
00920     std::vector<PGlobalDigi::DTDigi> MB3Digis =
00921       srcGlobalDigis->getMB3Digis();      
00922     mehDtMuonn[2]->Fill((float)nMB3Digis);
00923     for (unsigned int i = 0; i < MB3Digis.size(); ++i) {
00924       float layer = 4.0 * (MB3Digis[i].SLAYER - 1.0) + MB3Digis[i].LAYER;
00925       mehDtMuonLayer[2]->Fill(layer);
00926       mehDtMuonTime[2]->Fill(MB3Digis[i].TIME);
00927       mehDtMuonTimevLayer[2]->Fill(layer,MB3Digis[i].TIME,1);
00928     }
00929 
00930     std::vector<PGlobalDigi::DTDigi> MB4Digis =
00931       srcGlobalDigis->getMB4Digis();      
00932     mehDtMuonn[3]->Fill((float)nMB4Digis);
00933     for (unsigned int i = 0; i < MB4Digis.size(); ++i) {
00934       float layer = 4.0 * (MB4Digis[i].SLAYER - 1.0) + MB4Digis[i].LAYER;
00935       mehDtMuonLayer[3]->Fill(layer);
00936       mehDtMuonTime[3]->Fill(MB4Digis[i].TIME);
00937       mehDtMuonTimevLayer[3]->Fill(layer,MB4Digis[i].TIME,1);
00938     }
00939 
00940     // get CSC Strip info
00941     std::vector<PGlobalDigi::CSCstripDigi> CSCstripDigis =
00942       srcGlobalDigis->getCSCstripDigis();      
00943     mehCSCStripn->Fill((float)nCSCstripDigis);
00944     for (unsigned int i = 0; i < CSCstripDigis.size(); ++i) {
00945       mehCSCStripADC->Fill(CSCstripDigis[i].ADC);
00946     }
00947 
00948     // get CSC Wire info
00949     std::vector<PGlobalDigi::CSCwireDigi> CSCwireDigis =
00950       srcGlobalDigis->getCSCwireDigis();      
00951     mehCSCWiren->Fill((float)nCSCwireDigis);
00952     for (unsigned int i = 0; i < CSCwireDigis.size(); ++i) {
00953       mehCSCWireTime->Fill(CSCwireDigis[i].TIME);
00954     }
00955  if (verbosity > 0)
00956     edm::LogInfo (MsgLoggerCat)
00957       << "Done gathering data from event.";
00958 
00959   } // end loop through events
00960 }
00961 
00962 //define this as a plug-in
00963 //DEFINE_FWK_MODULE(GlobalDigisHistogrammer);