CMS 3D CMS Logo

Public Member Functions | Private Attributes

SiStripCablingDQM Class Reference

#include <SiStripCablingDQM.h>

Inheritance diagram for SiStripCablingDQM:
SiStripBaseCondObjDQM

List of all members.

Public Member Functions

void fillMEsForDet (ModMEs selModME_, uint32_t selDetId_)
void fillMEsForLayer (std::map< uint32_t, ModMEs > selModMEsMap_, uint32_t selDetId_)
void fillModMEs (const std::vector< uint32_t > &selectedDetIds)
void fillSummaryMEs (const std::vector< uint32_t > &selectedDetIds)
void getActiveDetIds (const edm::EventSetup &eSetup)
unsigned long long getCache (const edm::EventSetup &eSetup)
void getConditionObject (const edm::EventSetup &eSetup)
 SiStripCablingDQM (const edm::EventSetup &eSetup, edm::ParameterSet const &hPSet, edm::ParameterSet const &fPSet)
 ~SiStripCablingDQM ()

Private Attributes

edm::ESHandle< SiStripDetCablingcablingHandle_

Detailed Description

Definition at line 15 of file SiStripCablingDQM.h.


Constructor & Destructor Documentation

SiStripCablingDQM::SiStripCablingDQM ( const edm::EventSetup eSetup,
edm::ParameterSet const &  hPSet,
edm::ParameterSet const &  fPSet 
)

Definition at line 7 of file SiStripCablingDQM.cc.

References SiStripBaseCondObjDQM::HistoMaps_On_, and SiStripBaseCondObjDQM::Tk_HM_.

                                                                  :SiStripBaseCondObjDQM(eSetup, hPSet, fPSet){

  // Build the Histo_TkMap:
  if(HistoMaps_On_ ) Tk_HM_ = new TkHistoMap("SiStrip/Histo_Map","Cabling_TkMap",0.);

}
SiStripCablingDQM::~SiStripCablingDQM ( )

Definition at line 18 of file SiStripCablingDQM.cc.

{}

Member Function Documentation

void SiStripCablingDQM::fillMEsForDet ( ModMEs  selModME_,
uint32_t  selDetId_ 
) [inline, virtual]

Implements SiStripBaseCondObjDQM.

Definition at line 28 of file SiStripCablingDQM.h.

{;}
void SiStripCablingDQM::fillMEsForLayer ( std::map< uint32_t, ModMEs selModMEsMap_,
uint32_t  selDetId_ 
) [inline, virtual]

Implements SiStripBaseCondObjDQM.

Definition at line 29 of file SiStripCablingDQM.h.

{;}
void SiStripCablingDQM::fillModMEs ( const std::vector< uint32_t > &  selectedDetIds) [inline, virtual]

Reimplemented from SiStripBaseCondObjDQM.

Definition at line 25 of file SiStripCablingDQM.h.

{;}
void SiStripCablingDQM::fillSummaryMEs ( const std::vector< uint32_t > &  selectedDetIds) [inline, virtual]

Reimplemented from SiStripBaseCondObjDQM.

Definition at line 26 of file SiStripCablingDQM.h.

{;}
void SiStripCablingDQM::getActiveDetIds ( const edm::EventSetup eSetup) [virtual]

Implements SiStripBaseCondObjDQM.

Definition at line 24 of file SiStripCablingDQM.cc.

References SiStripBaseCondObjDQM::activeDetIds, DQMStore::book2D(), alignmentValidation::c1, cablingHandle_, SiStripBaseCondObjDQM::dqmStore_, MonitorElement::Fill(), TkHistoMap::fill(), SiStripBaseCondObjDQM::fillTkMap(), ExpressReco_HICollisions_FallBack::FolderName, SiStripBaseCondObjDQM::fPSet_, getConditionObject(), edm::ParameterSet::getParameter(), MonitorElement::getTH1(), SiStripBaseCondObjDQM::HistoMaps_On_, SiStripBaseCondObjDQM::hPSet_, i, j, TIBDetId::layer(), TOBDetId::layer(), AlCaRecoCosmics_cfg::name, cmsCodeRules::cppFunctionSkipper::operator, MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), TIDDetId::side(), TECDetId::side(), DetId::subdetId(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, SiStripBaseCondObjDQM::Tk_HM_, StripSubdetector::TOB, TIDDetId::wheel(), and TECDetId::wheel().

                                                                   {
  
  // Get active and total detIds
  getConditionObject(eSetup);
  cablingHandle_->addActiveDetectorsRawIds(activeDetIds);
  cablingHandle_->addAllDetectorsRawIds(activeDetIds);


  //Initialize arrays for counting:
  int counterTIB[4];
  for(int i=0;i<4;i++) counterTIB[i]=0;
  int counterTID[2][3];
  for(int i=0;i<2;i++){
    for(int j=0;j<3;j++)counterTID[i][j]=0;
  }
  int counterTOB[6];
  for(int i=0;i<6;i++)counterTOB[i]=0;
  int counterTEC[2][9];
  for(int i=0;i<2;i++){
    for(int j=0;j<9;j++)counterTEC[i][j]=0;
  }


 
  std::vector<uint32_t>::const_iterator idet=activeDetIds.begin();

  //fill arrays for counting and fill Histo_Map with value for connected : 
  for(;idet!=activeDetIds.end();++idet){
    uint32_t detId = *idet;
    StripSubdetector subdet(detId);

    if(HistoMaps_On_ ) {Tk_HM_->fill(detId, cablingHandle_->nApvPairs(detId)*2);}
    if(fPSet_.getParameter<bool>("TkMap_On") || hPSet_.getParameter<bool>("TkMap_On")){

    int32_t n_conn = 0;
      for(uint32_t connDet_i=0; connDet_i<cablingHandle_->getConnections(detId).size(); connDet_i++){
        if(cablingHandle_->getConnections(detId)[connDet_i].isConnected()!=0) n_conn++;
      }
      fillTkMap(detId,n_conn*2.); 
    }
    switch (subdet.subdetId()) 
      {
      case StripSubdetector::TIB:
        {
          TIBDetId tibId(detId);
          int i = tibId.layer() - 1;
          counterTIB[i]++;
          break;       
        }
      case StripSubdetector::TID:
        {
          TIDDetId tidId(detId);
          if (tidId.side() == 2) {
            int j = tidId.wheel() - 1;
            counterTID[0][j]++;
          }  else if (tidId.side() == 1) {
            int j = tidId.wheel() - 1;
            counterTID[1][j]++;
          }
          break;       
        }
      case StripSubdetector::TOB:
        {
          TOBDetId tobId(detId);
          int i = tobId.layer() - 1;
          counterTOB[i]++;
          break;       
        }
      case StripSubdetector::TEC:
        {
          TECDetId tecId(detId);
          if (tecId.side() == 2) {
            int j = tecId.wheel() - 1;
            counterTEC[0][j]++;
          }  else if (tecId.side() == 1) {
            int j = tecId.wheel() - 1;
            counterTEC[1][j]++;
          }
          break;       
        }
      }

  } // idet

  //obtained from tracker.dat and hard-coded
  int TIBDetIds[4]={672,864,540,648};
  int TIDDetIds[2][3]={{136,136,136},{136,136,136}};
  int TOBDetIds[6]={1008,1152,648,720,792,888};
  int TECDetIds[2][9]={{408,408,408,360,360,360,312,312,272},{408,408,408,360,360,360,312,312,272}};



  DQMStore* dqmStore_=edm::Service<DQMStore>().operator->();

  std::string FolderName=fPSet_.getParameter<std::string>("FolderName_For_QualityAndCabling_SummaryHistos");

  dqmStore_->setCurrentFolder(FolderName);

  //  dqmStore_->cd("SiStrip/MechanicalView/");
  MonitorElement *ME;
  ME = dqmStore_->book2D("SummaryOfCabling","SummaryOfCabling",6,0.5,6.5,9,0.5,9.5);
  ME->setAxisTitle("Sub Det",1);
  ME->setAxisTitle("Layer",2);


  ME->getTH1()->GetXaxis()->SetBinLabel(1,"TIB");
  ME->getTH1()->GetXaxis()->SetBinLabel(2,"TID F");
  ME->getTH1()->GetXaxis()->SetBinLabel(3,"TID B");
  ME->getTH1()->GetXaxis()->SetBinLabel(4,"TOB");
  ME->getTH1()->GetXaxis()->SetBinLabel(5,"TEC F");
  ME->getTH1()->GetXaxis()->SetBinLabel(6,"TEC B");

  for(int i=0;i<4;i++){
    ME->Fill(1,i+1,float(counterTIB[i])/TIBDetIds[i]);
  }
  
  for(int i=0;i<2;i++){
    for(int j=0;j<3;j++){
      ME->Fill(i+2,j+1,float(counterTID[i][j])/TIDDetIds[i][j]);
    }
  }

  for(int i=0;i<6;i++){
    ME->Fill(4,i+1,float(counterTOB[i])/TOBDetIds[i]);
  }
  
  for(int i=0;i<2;i++){
    for(int j=0;j<9;j++){
      ME->Fill(i+5,j+1,float(counterTEC[i][j])/TECDetIds[i][j]);
    }
  }

  if (fPSet_.getParameter<bool>("OutputSummaryAtLayerLevelAsImage")){

    TCanvas c1("c1");
    ME->getTH1()->Draw("TEXT");
    ME->getTH1()->SetStats(kFALSE);
    std::string name (ME->getTH1()->GetTitle());
    name+=".png";
    c1.Print(name.c_str());
  }

}
unsigned long long SiStripCablingDQM::getCache ( const edm::EventSetup eSetup) [inline, virtual]

Implements SiStripBaseCondObjDQM.

Definition at line 32 of file SiStripCablingDQM.h.

References edm::EventSetup::get().

{ return eSetup.get<SiStripDetCablingRcd>().cacheIdentifier();}
void SiStripCablingDQM::getConditionObject ( const edm::EventSetup eSetup) [inline, virtual]

Member Data Documentation

Definition at line 44 of file SiStripCablingDQM.h.

Referenced by getActiveDetIds(), and getConditionObject().