CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

OccupancyPlotter Class Reference

#include <DQM/OccupancyPlotter/src/OccupancyPlotter.cc>

Inheritance diagram for OccupancyPlotter:
edm::EDAnalyzer

List of all members.

Public Member Functions

 OccupancyPlotter (const edm::ParameterSet &)
 ~OccupancyPlotter ()

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob ()
virtual void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
virtual void beginRun (edm::Run const &, edm::EventSetup const &)
bool checkDcsInfo (const edm::Event &jEvent)
void checkLumiInfo (const edm::Event &jEvent)
virtual void endJob ()
virtual void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
virtual void endRun (edm::Run const &, edm::EventSetup const &)
virtual void fillHltMatrix (std::string, std::string, double, double, bool)
virtual void setupHltMatrix (std::string, int)

Private Attributes

float _instLumi
float _instLumi_err
float _pileup
int cntBadHV
int cntevt
DQMStoredbe
bool dcs [25]
bool debugPrint
TH1F * hist_LumivsLS
TH1F * hist_PUvsLS
HLTConfigProvider hltConfig_
bool outputPrint
vector< vector< string > > PDsVectorPathsVector
std::string plotDirectoryName
bool thisiLumiValue

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 58 of file OccupancyPlotter.cc.


Constructor & Destructor Documentation

OccupancyPlotter::OccupancyPlotter ( const edm::ParameterSet iConfig) [explicit]

Definition at line 127 of file OccupancyPlotter.cc.

References gather_cfg::cout, and edm::ParameterSet::getUntrackedParameter().

{
   //now do what ever initialization is needed

  debugPrint = false;
  outputPrint = false;
  thisiLumiValue = false;
  cntevt=0;
  cntBadHV=0;
  if (debugPrint) std::cout << "Inside Constructor" << std::endl;

  plotDirectoryName = iConfig.getUntrackedParameter<std::string>("dirname", "HLT/Test");

  if (debugPrint) std::cout << "Got plot dirname = " << plotDirectoryName << std::endl;


}
OccupancyPlotter::~OccupancyPlotter ( )

Definition at line 147 of file OccupancyPlotter.cc.

{
 
   // do anything here that needs to be done at desctruction time
   // (e.g. close files, deallocate resources etc.)

}

Member Function Documentation

void OccupancyPlotter::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDAnalyzer.

Definition at line 162 of file OccupancyPlotter.cc.

References gather_cfg::cout, makeLayoutFileForGui::datasetNames, trigger::TriggerObject::eta(), edm::Event::getByLabel(), getHLTprescales::index, relativeConstraints::keys, edm::EventBase::luminosityBlock(), EgammaValidation_cff::pathName, trigger::TriggerObject::phi(), trigger::TriggerObject::pt(), findQualityFiles::size, and patRefSel_triggerSelection_cff::triggerResults.

{
   using namespace edm;
   using std::string;
   int lumisection = (int)iEvent.luminosityBlock();

   if (debugPrint) std::cout << "Inside analyze" << std::endl;
   ++cntevt;
   if (cntevt % 10000 == 0) std::cout << "[OccupancyPlotter::analyze] Received event " << cntevt << std::endl;
   // === Check the HV and the lumi
   bool highVoltageOK = checkDcsInfo ( iEvent );
   if (!highVoltageOK) {
      if (debugPrint) std::cout << "Skipping event: DCS problem\n";
      ++cntBadHV;
      return; 
   } 
   checkLumiInfo( iEvent);

   if (debugPrint) std::cout << "instantaneous luminosity=" << _instLumi << " ± " << _instLumi_err << std::endl;

   if (thisiLumiValue){
     thisiLumiValue = false;
     std::cout << "LS = " << lumisection << ", Lumi = " << _instLumi << " ± " << _instLumi_err << ", pileup = " << _pileup << std::endl;

     hist_LumivsLS = dbe->get("HLT/OccupancyPlots/HLT_LumivsLS")->getTH1F();
     hist_LumivsLS->SetBinContent(lumisection+1,_instLumi);
     hist_LumivsLS->SetBinError(lumisection+1,_instLumi_err);
     //
     hist_PUvsLS = dbe->get("HLT/OccupancyPlots/HLT_PUvsLS")->getTH1F();
     hist_PUvsLS->SetBinContent(lumisection+1,_pileup);

   }

    // Access Trigger Results
   edm::Handle<edm::TriggerResults> triggerResults;
   iEvent.getByLabel(InputTag("TriggerResults","", "HLT"), triggerResults);
   
   if (!triggerResults.isValid()) {
     if (debugPrint) std::cout << "Trigger results not valid" << std::endl;
     return; }

    if (debugPrint) std::cout << "Found triggerResults" << std::endl;

   edm::Handle<trigger::TriggerEvent>         aodTriggerEvent;   
   iEvent.getByLabel(InputTag("hltTriggerSummaryAOD", "", "HLT"), aodTriggerEvent);
   
   if ( !aodTriggerEvent.isValid() ) { 
     if (debugPrint) std::cout << "No AOD trigger summary found! Returning..."; 
     return; 
   }

   const TriggerObjectCollection objects = aodTriggerEvent->getObjects();


   vector<string> datasetNames =  hltConfig_.streamContent("A");
// Loop over PDs
   for (unsigned int iPD = 0; iPD < datasetNames.size(); iPD++) { 

     //     if (datasetNames[iPD] != "SingleMu" && datasetNames[iPD] != "SingleElectron" && datasetNames[iPD] != "Jet") continue;  

     unsigned int keyTracker[1000]; // Array to eliminate double counts by tracking what Keys have already been fired
   for(unsigned int irreproduceableIterator = 0; irreproduceableIterator < 1000; irreproduceableIterator++) {
     keyTracker[irreproduceableIterator] = 1001;
   }
// Loop over Paths in each PD
   for (unsigned int iPath = 0; iPath < PDsVectorPathsVector[iPD].size(); iPath++) { //Andrew - where does PDsVectorPathsVector get defined?
     
     std::string pathName = PDsVectorPathsVector[iPD][iPath];

     if (debugPrint) std::cout << "Looking at path " << pathName << std::endl;
     
     unsigned int index = hltConfig_.triggerIndex(pathName);
     
     if (debugPrint) std::cout << "Index = " << index << " triggerResults->size() = " << triggerResults->size() << std::endl;

     if (index < triggerResults->size()) {
       if(triggerResults->accept(index)) {

         if (debugPrint) std::cout << "We fired path " << pathName << std::endl;

         // look up module labels for this path

         vector<std::string> modulesThisPath = hltConfig_.moduleLabels(pathName);

         if (debugPrint) std::cout << "Looping over module labels " << std::endl;

         // Loop backward through module names
         for ( int iModule = (modulesThisPath.size()-1); iModule >= 0; iModule--) {

           if (debugPrint) std::cout << "Module name is " << modulesThisPath[iModule] << std::endl;

           // check to see if you have savetags information
           if (hltConfig_.saveTags(modulesThisPath[iModule])) {

             if (debugPrint) std::cout << "For path " << pathName << " this module " << modulesThisPath[iModule] <<" is a saveTags module of type " << hltConfig_.moduleType(modulesThisPath[iModule]) << std::endl;

             if (hltConfig_.moduleType(modulesThisPath[iModule]) == "HLTLevel1GTSeed") break;

             InputTag moduleWhoseResultsWeWant(modulesThisPath[iModule], "", "HLT");

             unsigned int indexOfModuleInAodTriggerEvent = aodTriggerEvent->filterIndex(moduleWhoseResultsWeWant);

             if ( indexOfModuleInAodTriggerEvent < aodTriggerEvent->sizeFilters() ) {
               const Keys &keys = aodTriggerEvent->filterKeys( indexOfModuleInAodTriggerEvent );
               if (debugPrint) std::cout << "Got Keys for index " << indexOfModuleInAodTriggerEvent <<", size of keys is " << keys.size() << std::endl;
               
               for ( size_t iKey = 0; iKey < keys.size(); iKey++ ) {
                 TriggerObject foundObject = objects[keys[iKey]];
                 bool first_count = false;

                 if(keyTracker[iKey] != iKey) first_count = true;
                        
                 if (debugPrint || outputPrint) std::cout << "This object has (pt, eta, phi) = "
                                                          << std::setw(10) << foundObject.pt()
                                                          << ", " << std::setw(10) << foundObject.eta() 
                                                          << ", " << std::setw(10) << foundObject.phi()
                                                          << "    for path = " << std::setw(20) << pathName
                                                          << " module " << std::setw(40) << modulesThisPath[iModule]
                                                          << " iKey " << iKey << std::endl;

                 fillHltMatrix(datasetNames[iPD],pathName,foundObject.eta(),foundObject.phi(),first_count);
                      
                 keyTracker[iKey] = iKey;
                 

               }// end for each key               
             }// end if filter in aodTriggerEvent
             

             // OK, we found the last module. No need to look at the others.
             // get out of the loop

             break;
           }// end if saveTags
         }//end Loop backward through module names   
       }// end if(triggerResults->accept(index))
     }// end if (index < triggerResults->size())
   }// end Loop over Paths in each PD
   }//end Loop over PDs


   

}
void OccupancyPlotter::beginJob ( void  ) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 310 of file OccupancyPlotter.cc.

References gather_cfg::cout, and cmsCodeRules::cppFunctionSkipper::operator.

{

  if (debugPrint) std::cout << "Inside begin job" << std::endl; 

  dbe = Service<DQMStore>().operator->();

  if (dbe) {

    dbe->setCurrentFolder(plotDirectoryName);

  }

}
void OccupancyPlotter::beginLuminosityBlock ( edm::LuminosityBlock const &  lb,
edm::EventSetup const &   
) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 615 of file OccupancyPlotter.cc.

References gather_cfg::cout, and edm::LuminosityBlockBase::luminosityBlock().

{
 unsigned int thisLumiSection = 0;
 thisLumiSection = lb.luminosityBlock();
 std::cout << "[OccupancyPlotter::beginLuminosityBlock] New luminosity block: " << thisLumiSection << std::endl; 
 thisiLumiValue=true; // add the instantaneous luminosity of the first event to the LS-Lumi plot
}
void OccupancyPlotter::beginRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 333 of file OccupancyPlotter.cc.

References gather_cfg::cout, makeLayoutFileForGui::datasetNames, and i.

{

  if (debugPrint) std::cout << "Inside beginRun" << std::endl;

  bool changed = true;
  if (hltConfig_.init(iRun, iSetup, "HLT", changed)) {
    if(debugPrint)
      if(debugPrint) std::cout << "HLT config with process name " 
                << "HLT" << " successfully extracted" << std::endl;
  } else {
    if (debugPrint)
      if (debugPrint) std::cout << "Warning, didn't find process HLT" << std::endl;
  }

  vector<string> datasetNames =  hltConfig_.streamContent("A");
  for (unsigned int i=0;i<datasetNames.size();i++) {

    if (debugPrint) std::cout << "This is dataset " << datasetNames[i] <<std::endl;

    vector<string> datasetPaths = hltConfig_.datasetContent(datasetNames[i]);

    if (debugPrint) std::cout << "datasetPaths.size() = " << datasetPaths.size() << std::endl;

    PDsVectorPathsVector.push_back(datasetPaths);

    if (debugPrint) std::cout <<"Found PD: " << datasetNames[i]  << std::endl;     
    setupHltMatrix(datasetNames[i],i);   
    int maxLumisection=1000;
    dbe->setCurrentFolder("HLT/OccupancyPlots/");
    hist_LumivsLS = new TH1F("HLT_LumivsLS", "; Lumisection; Instantaneous Luminosity (cm^{-2} s^{-1})",maxLumisection,0,maxLumisection);
    dbe->book1D("HLT_LumivsLS", hist_LumivsLS);
    hist_PUvsLS = new TH1F("HLT_PUvsLS", "; Lumisection; Pileup",maxLumisection,0,maxLumisection);
    dbe->book1D("HLT_PUvsLS", hist_PUvsLS);

  }// end of loop over dataset names

}// end of beginRun
bool OccupancyPlotter::checkDcsInfo ( const edm::Event jEvent) [private]

Definition at line 508 of file OccupancyPlotter.cc.

References DcsStatus::BPIX, gather_cfg::cout, DcsStatus::CSCm, DcsStatus::CSCp, DcsStatus::DT0, DcsStatus::DTm, DcsStatus::DTp, DcsStatus::EBm, DcsStatus::EBp, DcsStatus::EEm, DcsStatus::EEp, DcsStatus::ESm, DcsStatus::ESp, DcsStatus::FPIX, edm::Event::getByLabel(), DcsStatus::HBHEa, DcsStatus::HBHEb, DcsStatus::HBHEc, DcsStatus::HF, i, edm::HandleBase::isValid(), DcsStatus::RPC, DcsStatus::TECm, DcsStatus::TECp, DcsStatus::TIBTID, and DcsStatus::TOB.

                                                            {

  //Copy of code from DQMServices/Components/src/DQMDcsInfo.cc

  edm::Handle<DcsStatusCollection> dcsStatus;
  if ( ! jEvent.getByLabel("hltScalersRawToDigi", dcsStatus) )
    {
      std::cout  << "[OccupancyPlotter::checkDcsInfo] Could not get scalersRawToDigi by label\n" ;
      for (int i=0;i<24;i++) dcs[i]=false;
      return false;
    }//if (debugPrint) 

  if ( ! dcsStatus.isValid() ) 
    {
      std::cout  << "[OccupancyPlotter::checkDcsInfo] scalersRawToDigi not valid\n" ;
      for (int i=0;i<24;i++) dcs[i]=false; // info not available: set to false
      return false;
    }
  
  // initialize all to "true"
  for (int i=0; i<24; i++) dcs[i]=true;
  
  for (DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin(); 
       dcsStatusItr != dcsStatus->end(); ++dcsStatusItr) 
    {
      
      if (debugPrint) std::cout << (*dcsStatusItr) << std::endl;
      
      if (!dcsStatusItr->ready(DcsStatus::CSCp))   dcs[0]=false;
      if (!dcsStatusItr->ready(DcsStatus::CSCm))   dcs[1]=false;   
      if (!dcsStatusItr->ready(DcsStatus::DT0))    dcs[2]=false;
      if (!dcsStatusItr->ready(DcsStatus::DTp))    dcs[3]=false;
      if (!dcsStatusItr->ready(DcsStatus::DTm))    dcs[4]=false;
      if (!dcsStatusItr->ready(DcsStatus::EBp))    dcs[5]=false;
      if (!dcsStatusItr->ready(DcsStatus::EBm))    dcs[6]=false;
      if (!dcsStatusItr->ready(DcsStatus::EEp))    dcs[7]=false;
      if (!dcsStatusItr->ready(DcsStatus::EEm))    dcs[8]=false;
      if (!dcsStatusItr->ready(DcsStatus::ESp))    dcs[9]=false;
      if (!dcsStatusItr->ready(DcsStatus::ESm))    dcs[10]=false; 
      if (!dcsStatusItr->ready(DcsStatus::HBHEa))  dcs[11]=false;
      if (!dcsStatusItr->ready(DcsStatus::HBHEb))  dcs[12]=false;
      if (!dcsStatusItr->ready(DcsStatus::HBHEc))  dcs[13]=false; 
      if (!dcsStatusItr->ready(DcsStatus::HF))     dcs[14]=false;
//      if (!dcsStatusItr->ready(DcsStatus::HO))     dcs[15]=false; // ignore HO
      if (!dcsStatusItr->ready(DcsStatus::BPIX))   dcs[16]=false;
      if (!dcsStatusItr->ready(DcsStatus::FPIX))   dcs[17]=false;
      if (!dcsStatusItr->ready(DcsStatus::RPC))    dcs[18]=false;
      if (!dcsStatusItr->ready(DcsStatus::TIBTID)) dcs[19]=false;
      if (!dcsStatusItr->ready(DcsStatus::TOB))    dcs[20]=false;
      if (!dcsStatusItr->ready(DcsStatus::TECp))   dcs[21]=false;
      if (!dcsStatusItr->ready(DcsStatus::TECm))   dcs[22]=false;
//      if (!dcsStatusItr->ready(DcsStatus::CASTOR)) dcs[23]=false;
    }


  // now we should add some logic that tests the HV status
  bool decision = true;
  for (int i=0; i<24; i++) decision=decision && dcs[i];
  if (debugPrint) {
     std::cout << "[OccupancyPlotter::checkDcsInfo] DCS Status:";
     for (int i=0; i<24; i++) std::cout << dcs[i] << "-";
     std::cout << "; Decision: " << decision << std::endl;
  }
  //std::cout << "; Decision: " << decision << std::endl;
  return decision;
  
}
void OccupancyPlotter::checkLumiInfo ( const edm::Event jEvent) [private]

Definition at line 576 of file OccupancyPlotter.cc.

References gather_cfg::cout, edm::Event::getByLabel(), and edm::HandleBase::isValid().

                                                             {

  if (debugPrint) std::cout << "Inside method check lumi info" << std::endl;
  
  edm::Handle<LumiScalersCollection> lumiScalers;
  bool lumiHandleOK = jEvent.getByLabel(InputTag("hltScalersRawToDigi","",""), lumiScalers);

  if (!lumiHandleOK || !lumiScalers.isValid()){
    if (debugPrint) std::cout << "scalers not valid" << std::endl;
    return;
  }

  if (lumiScalers->size() == 0) {
    if (debugPrint) std::cout << "scalers has size < 0" << std::endl;
    return;    
  }

  LumiScalersCollection::const_iterator it3 = lumiScalers->begin();
  //unsigned int lumisection = it3->sectionNumber();

  _instLumi = it3->instantLumi();
  _instLumi_err = it3->instantLumiErr();
  _pileup = it3->pileup();

  if (debugPrint) std::cout << "Instanteous Lumi is " << _instLumi << std::endl;
  if (debugPrint) std::cout << "Instanteous Lumi Error is " << _instLumi_err << std::endl;
  if (debugPrint) std::cout << "Lumi Fill is " <<it3->lumiFill() << std::endl;
  if (debugPrint) std::cout << "Lumi Fill is " <<it3->lumiRun() << std::endl;
  if (debugPrint) std::cout << "Live Lumi Fill is " <<it3->liveLumiFill() << std::endl;
  if (debugPrint) std::cout << "Live Lumi Run is " <<it3->liveLumiRun() << std::endl;
  if (debugPrint) std::cout << "Pileup? = " << _pileup << std::endl;

  return;
  
}
void OccupancyPlotter::endJob ( void  ) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 327 of file OccupancyPlotter.cc.

{
}
void OccupancyPlotter::endLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 625 of file OccupancyPlotter.cc.

{
}
void OccupancyPlotter::endRun ( edm::Run const &  ,
edm::EventSetup const &   
) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 373 of file OccupancyPlotter.cc.

References gather_cfg::cout.

{
   std::cout << "[OccupancyPlotter::endRun] Total events received=" << cntevt << ", events with HV problem=" << cntBadHV << std::endl;
}
void OccupancyPlotter::fillHltMatrix ( std::string  label,
std::string  path,
double  Eta,
double  Phi,
bool  first_count 
) [private, virtual]

Definition at line 449 of file OccupancyPlotter.cc.

References gather_cfg::cout, MonitorElement::getTH1F(), and MonitorElement::getTH2F().

                                                                                                             {

  if (debugPrint) std::cout << "Inside fillHltMatrix( " << label << " , " << path << " ) " << std::endl;

  std::string fullPathToME;
  std::string fullPathToME1dEta;
  std::string fullPathToME1dPhi;
  std::string fullPathToME1dEtaPath;
  std::string fullPathToME1dPhiPath;

 fullPathToME = "HLT/OccupancyPlots/HLT_"+label+"_EtaVsPhi"; 
 fullPathToME1dEta = "HLT/OccupancyPlots/HLT_"+label+"_1dEta";
 fullPathToME1dPhi = "HLT/OccupancyPlots/HLT_"+label+"_1dPhi";

if (label != "SingleMu" && label != "SingleElectron" && label != "Jet") {
 fullPathToME = "HLT/OccupancyPlots/"+label+"/HLT_"+label+"_EtaVsPhi"; 
 fullPathToME1dEta = "HLT/OccupancyPlots/"+label+"/HLT_"+label+"_1dEta";
 fullPathToME1dPhi = "HLT/OccupancyPlots/"+label+"/HLT_"+label+"_1dPhi";
 }
 
 fullPathToME1dEtaPath = "HLT/OccupancyPlots/"+label+"/Paths/HLT_"+path+"_1dEta";
 fullPathToME1dPhiPath = "HLT/OccupancyPlots/"+label+"/Paths/HLT_"+path+"_1dPhi";

  if (debugPrint) std::cout << "fullPathToME = " << std::endl;

  MonitorElement * ME_2d = dbe->get(fullPathToME);
  MonitorElement * ME_1dEta = dbe->get(fullPathToME1dEta);
  MonitorElement * ME_1dPhi = dbe->get(fullPathToME1dPhi);  
  MonitorElement * ME_1dEtaPath = dbe->get(fullPathToME1dEtaPath);
  MonitorElement * ME_1dPhiPath = dbe->get(fullPathToME1dPhiPath);

  if (debugPrint) std::cout << "MonitorElement * " << std::endl;

  TH2F * hist_2d = ME_2d->getTH2F();
  TH1F * hist_1dEta = ME_1dEta->getTH1F();
  TH1F * hist_1dPhi = ME_1dPhi->getTH1F();
  TH1F * hist_1dEtaPath = ME_1dEtaPath->getTH1F();
  TH1F * hist_1dPhiPath = ME_1dPhiPath->getTH1F();

  if (debugPrint) std::cout << "TH2F *" << std::endl;

  //int i=2;
  //if (Eta>1.305 && Eta<1.872) i=0;
  //if (Eta<-1.305 && Eta>-1.872) i=0;
  //for (int ii=i; ii<3; ++ii) hist_2d->Fill(Eta,Phi); //Scales narrow bins in Barrel/Endcap border region

  if(first_count) {
    hist_1dEta->Fill(Eta);
    hist_1dPhi->Fill(Phi); 
    hist_2d->Fill(Eta,Phi); }
    hist_1dEtaPath->Fill(Eta); 
    hist_1dPhiPath->Fill(Phi);

 if (debugPrint) std::cout << "hist->Fill" << std::endl;

} //End fillHltMatrix
void OccupancyPlotter::setupHltMatrix ( std::string  label,
int  iPD 
) [private, virtual]

Definition at line 378 of file OccupancyPlotter.cc.

References gather_cfg::cout, Gflash::EtaMax, EgammaValidation_cff::pathName, and Pi.

                                                              {

std::string h_name;
std::string h_title;
std::string h_name_1dEta;
std::string h_name_1dPhi;
std::string h_title_1dEta;
std::string h_title_1dPhi;
std::string h_name_1dEtaPath;
std::string h_name_1dPhiPath;
std::string h_title_1dEtaPath;
std::string h_title_1dPhiPath;
std::string pathName;
std::string PD_Folder;
std::string Path_Folder;

PD_Folder = TString("HLT/OccupancyPlots");
if (label != "SingleMu" && label != "SingleElectron" && label != "Jet")  PD_Folder = TString("HLT/OccupancyPlots/"+label); 

dbe->setCurrentFolder(PD_Folder.c_str());

h_name = "HLT_"+label+"_EtaVsPhi";
h_title = "HLT_"+label+"_EtaVsPhi; eta; phi";
h_name_1dEta = "HLT_"+label+"_1dEta";
h_name_1dPhi = "HLT_"+label+"_1dPhi";
h_title_1dEta = label+" Occupancy Vs Eta";
h_title_1dPhi = label+" Occupancy Vs Phi";
//Int_t numBinsEta = 12;
//Int_t numBinsPhi = 8;
Int_t numBinsEta = 30;
Int_t numBinsPhi = 34;
Int_t numBinsEtaFine = 60;
Int_t numBinsPhiFine = 66;
Double_t EtaMax = 2.610;
Double_t PhiMax = 17.0*TMath::Pi()/16.0;
Double_t PhiMaxFine = 33.0*TMath::Pi()/32.0;

  //Double_t eta_bins[] = {-2.610,-2.349,-2.088,-1.827,-1.740,-1.653,-1.566,-1.479,-1.392,-1.305,-1.044,-0.783,-0.522,-0.261,0,0.261,0.522,0.783,1.044,1.305,1.392,1.479,1.566,1.653,1.740,1.827,2.088,2.349,2.610}; //Has narrower bins in Barrel/Endcap border region
//Double_t eta_bins[] = {-2.610,-2.175,-1.740,-1.305,-0.870,-0.435,0,0.435,0.870,1.305,1.740,2.175,2.610};
//Double_t phi_bins[] = {-TMath::Pi(),-3*TMath::Pi()/4,-TMath::Pi()/2,-TMath::Pi()/4,0,TMath::Pi()/4,TMath::Pi()/2,3*TMath::Pi()/4,TMath::Pi()};

 TH2F * hist_EtaVsPhi = new TH2F(h_name.c_str(),h_title.c_str(),numBinsEta,-EtaMax,EtaMax,numBinsPhi,-PhiMax,PhiMax);
 TH1F * hist_1dEta = new TH1F(h_name_1dEta.c_str(),h_title_1dEta.c_str(),numBinsEtaFine,-EtaMax,EtaMax);
 TH1F * hist_1dPhi = new TH1F(h_name_1dPhi.c_str(),h_title_1dPhi.c_str(),numBinsPhiFine,-PhiMaxFine,PhiMaxFine);

 hist_EtaVsPhi->SetMinimum(0);
 hist_1dEta->SetMinimum(0);
 hist_1dPhi->SetMinimum(0);

dbe->book2D(h_name.c_str(),hist_EtaVsPhi);
dbe->book1D(h_name_1dEta.c_str(),hist_1dEta);
dbe->book1D(h_name_1dPhi.c_str(),hist_1dPhi);

  for (unsigned int iPath = 0; iPath < PDsVectorPathsVector[iPD].size(); iPath++) { 
    pathName = PDsVectorPathsVector[iPD][iPath];
    h_name_1dEtaPath = "HLT_"+pathName+"_1dEta";
    h_name_1dPhiPath = "HLT_"+pathName+"_1dPhi";
    h_title_1dEtaPath = pathName+" Occupancy Vs Eta";
    h_title_1dPhiPath = pathName+"Occupancy Vs Phi";
    Path_Folder = TString("HLT/OccupancyPlots/"+label+"/Paths");
    dbe->setCurrentFolder(Path_Folder.c_str());

    dbe->book1D(h_name_1dEtaPath.c_str(),h_title_1dEtaPath.c_str(),numBinsEtaFine,-EtaMax,EtaMax);
    dbe->book1D(h_name_1dPhiPath.c_str(),h_title_1dPhiPath.c_str(),numBinsPhiFine,-PhiMaxFine,PhiMaxFine);
  
    if (debugPrint) std::cout << "book1D for " << pathName << std::endl;
  }
   
 if (debugPrint) std::cout << "Success setupHltMatrix( " << label << " , " << iPD << " )" << std::cout;
} //End setupHltMatrix

Member Data Documentation

float OccupancyPlotter::_instLumi [private]

Definition at line 98 of file OccupancyPlotter.cc.

Definition at line 99 of file OccupancyPlotter.cc.

float OccupancyPlotter::_pileup [private]

Definition at line 100 of file OccupancyPlotter.cc.

Definition at line 108 of file OccupancyPlotter.cc.

int OccupancyPlotter::cntevt [private]

Definition at line 107 of file OccupancyPlotter.cc.

Definition at line 91 of file OccupancyPlotter.cc.

bool OccupancyPlotter::dcs[25] [private]

Definition at line 103 of file OccupancyPlotter.cc.

Definition at line 86 of file OccupancyPlotter.cc.

Definition at line 111 of file OccupancyPlotter.cc.

Definition at line 112 of file OccupancyPlotter.cc.

Definition at line 93 of file OccupancyPlotter.cc.

Definition at line 87 of file OccupancyPlotter.cc.

vector< vector<string> > OccupancyPlotter::PDsVectorPathsVector [private]

Definition at line 95 of file OccupancyPlotter.cc.

std::string OccupancyPlotter::plotDirectoryName [private]

Definition at line 89 of file OccupancyPlotter.cc.

Definition at line 104 of file OccupancyPlotter.cc.