CMS 3D CMS Logo

Classes | Public Member Functions | Private Member Functions | Private Attributes

SiStripMonitorDigi Class Reference

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

Inheritance diagram for SiStripMonitorDigi:
edm::EDAnalyzer

List of all members.

Classes

struct  DigiFailureMEs
struct  LayerMEs
struct  ModMEs
struct  SubDetMEs

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob ()
virtual void beginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
virtual void beginRun (const edm::Run &, const edm::EventSetup &)
virtual void endJob ()
virtual void endLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
virtual void endRun (const edm::Run &, const edm::EventSetup &)
 SiStripMonitorDigi (const edm::ParameterSet &)
 ~SiStripMonitorDigi ()

Private Member Functions

bool AllDigis (const edm::EventSetup &es)
void bookLayer ()
MonitorElementbookME1D (const char *ParameterSetLabel, const char *HistoName)
MonitorElementbookMETrend (const char *ParameterSetLabel, const char *HistoName)
void bookTrendMEs (TString name, int32_t layer, uint32_t id, std::string flag)
void createLayerMEs (std::string label, int ndet)
void createMEs (const edm::EventSetup &es)
void createModuleMEs (ModMEs &mod_single, uint32_t detid)
void createSubDetMEs (std::string label)
void createSubDetTH2 (std::string label)
void fillDigiADCsMEs (int value, std::string name)
void fillME (MonitorElement *ME, float value1, float value2)
void fillME (MonitorElement *ME, float value1, float value2, float value3)
void fillME (MonitorElement *ME, float value1)
void fillME (MonitorElement *ME, float value1, float value2, float value3, float value4)
void fillTrend (MonitorElement *me, float value, float timeinorbit)
int getDigiSourceIndex (uint32_t id)
void ResetModuleMEs (uint32_t idet)

Private Attributes

edm::InputTag apvPhaseProducer_
bool calculate_strip_occupancy
edm::ParameterSet conf_
bool createTrendMEs
SiStripDCSStatusdcsStatus_
std::map< std::pair
< std::string, int32_t >, bool > 
DetectedLayers
std::vector< const
edm::DetSetVector< SiStripDigi > * > 
digi_detset_handles
DigiFailureMEs digiFailureMEs
std::map< uint32_t, ModMEsDigiMEs
std::vector< edm::InputTagdigiProducerList
bool digitkhistomapon
DQMStoredqmStore_
int eventNb
int firstEvent
SiStripFolderOrganizer folder_organizer
edm::InputTag historyProducer_
std::map< std::string,
std::vector< uint32_t > > 
LayerDetMap
std::map< std::string, LayerMEsLayerMEsMap
bool layerswitchadccooleston
bool layerswitchadchotteston
bool layerswitchdigiadcprofon
bool layerswitchdigiadcson
bool layerswitchnumdigisapvon
bool layerswitchnumdigison
bool layerswitchnumdigisprofon
bool layerswitchstripoccupancyon
unsigned long long m_cacheID_
bool Mod_On_
std::vector< uint32_t > ModulesToBeExcluded_
bool moduleswitchadccooleston
bool moduleswitchadchotteston
bool moduleswitchdigiadcson
bool moduleswitchnumdigison
bool moduleswitchnumdigispstripon
bool moduleswitchstripoccupancyon
TString name
bool reset_each_run
int runNb
bool select_all_detectors
bool show_control_view
bool show_mechanical_structure_view
bool show_readout_view
edm::ESHandle< SiStripDetCablingSiStripDetCabling_
std::map< std::string, SubDetMEsSubDetMEsMap
std::map< std::string,
std::string > 
SubDetPhasePartMap
bool subdetswitchapvcycleprofon
bool subdetswitchapvcycleth2on
bool subdetswitchtotdigifailureon
bool subdetswitchtotdigiproflson
bool subdetswitchtotdigiprofon
TkHistoMaptkmapdigi
std::string topDir
int xLumiProf

Detailed Description

Data Quality Monitoring source of the Silicon Strip Tracker. Produces histograms related to digis.

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 26 of file SiStripMonitorDigi.h.


Constructor & Destructor Documentation

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

Definition at line 40 of file SiStripMonitorDigi.cc.

References apvPhaseProducer_, conf_, createTrendMEs, dcsStatus_, digiProducerList, digitkhistomapon, eventNb, firstEvent, edm::ParameterSet::getParameter(), historyProducer_, layerswitchadccooleston, layerswitchadchotteston, layerswitchdigiadcprofon, layerswitchdigiadcson, layerswitchnumdigison, layerswitchnumdigisprofon, layerswitchstripoccupancyon, Mod_On_, moduleswitchadccooleston, moduleswitchadchotteston, moduleswitchdigiadcson, moduleswitchnumdigison, moduleswitchnumdigispstripon, moduleswitchstripoccupancyon, SubDetPhasePartMap, subdetswitchapvcycleprofon, subdetswitchapvcycleth2on, subdetswitchtotdigifailureon, subdetswitchtotdigiproflson, subdetswitchtotdigiprofon, and xLumiProf.

                                                                     : dqmStore_(edm::Service<DQMStore>().operator->()), conf_(iConfig), show_mechanical_structure_view(true), show_readout_view(false), show_control_view(false), select_all_detectors(true), reset_each_run(false), folder_organizer(), m_cacheID_(0) 
{
  firstEvent = -1;
  eventNb = 0;

  // Detector Partitions
  SubDetPhasePartMap["TIB"]        = "TI";
  SubDetPhasePartMap["TID__side__1"] = "TI";
  SubDetPhasePartMap["TID__side__2"] = "TI";
  SubDetPhasePartMap["TOB"]        = "TO";
  SubDetPhasePartMap["TEC__side__1"] = "TM";
  SubDetPhasePartMap["TEC__side__2"] = "TP";

  // get Digi Producer List   
  digiProducerList = conf_.getParameter<std::vector<edm::InputTag> >("DigiProducersList");

  //get on/off option for every cluster from cfi
  edm::ParameterSet ParametersNumberOfDigis =  conf_.getParameter<edm::ParameterSet>("TH1NumberOfDigis");
  layerswitchnumdigison = ParametersNumberOfDigis.getParameter<bool>("layerswitchon");
  moduleswitchnumdigison = ParametersNumberOfDigis.getParameter<bool>("moduleswitchon");
  
  edm::ParameterSet ParametersNumberOfDigisPerStrip =  conf_.getParameter<edm::ParameterSet>("TH1NumberOfDigisPerStrip");
  moduleswitchnumdigispstripon = ParametersNumberOfDigisPerStrip.getParameter<bool>("moduleswitchon");

  edm::ParameterSet ParametersADCsHottestStrip =  conf_.getParameter<edm::ParameterSet>("TH1ADCsHottestStrip");
  layerswitchadchotteston = ParametersADCsHottestStrip.getParameter<bool>("layerswitchon");
  moduleswitchadchotteston = ParametersADCsHottestStrip.getParameter<bool>("moduleswitchon");
  
  edm::ParameterSet ParametersADCsCoolestStrip =  conf_.getParameter<edm::ParameterSet>("TH1ADCsCoolestStrip");
  layerswitchadccooleston = ParametersADCsCoolestStrip.getParameter<bool>("layerswitchon");
  moduleswitchadccooleston = ParametersADCsCoolestStrip.getParameter<bool>("moduleswitchon");
  
  edm::ParameterSet ParametersDigiADCs =  conf_.getParameter<edm::ParameterSet>("TH1DigiADCs");
  layerswitchdigiadcson = ParametersDigiADCs.getParameter<bool>("layerswitchon");
  moduleswitchdigiadcson = ParametersDigiADCs.getParameter<bool>("moduleswitchon");
   
  edm::ParameterSet ParametersStripOccupancy =  conf_.getParameter<edm::ParameterSet>("TH1StripOccupancy");
  layerswitchstripoccupancyon = ParametersStripOccupancy.getParameter<bool>("layerswitchon");
  moduleswitchstripoccupancyon = ParametersStripOccupancy.getParameter<bool>("moduleswitchon");

  edm::ParameterSet ParametersDigiProf = conf_.getParameter<edm::ParameterSet>("TProfNumberOfDigi");
  layerswitchnumdigisprofon = ParametersDigiProf.getParameter<bool>("layerswitchon");
  edm::ParameterSet ParametersDigiADC = conf_.getParameter<edm::ParameterSet>("TProfDigiADC");
  layerswitchdigiadcprofon = ParametersDigiProf.getParameter<bool>("layerswitchon");

  edm::ParameterSet ParametersTotDigiProf = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfDigis");
  subdetswitchtotdigiprofon = ParametersTotDigiProf.getParameter<bool>("subdetswitchon");

  edm::ParameterSet ParametersTotDigisProfVsLS = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfDigisVsLS");
  subdetswitchtotdigiproflson = ParametersTotDigisProfVsLS.getParameter<bool>("subdetswitchon");

  edm::ParameterSet ParametersTotDigiFailure = conf_.getParameter<edm::ParameterSet>("TotalNumberOfDigisFailure");
  subdetswitchtotdigifailureon = ParametersTotDigiFailure.getParameter<bool>("subdetswitchon");

  edm::ParameterSet ParametersDigiApvProf = conf_.getParameter<edm::ParameterSet>("TProfDigiApvCycle");
  subdetswitchapvcycleprofon = ParametersDigiApvProf.getParameter<bool>("subdetswitchon");

  edm::ParameterSet ParametersDigiApvTH2 = conf_.getParameter<edm::ParameterSet>("TH2DigiApvCycle");
  subdetswitchapvcycleth2on = ParametersDigiApvTH2.getParameter<bool>("subdetswitchon");

  digitkhistomapon = conf_.getParameter<bool>("TkHistoMap_On"); 
  
  createTrendMEs = conf_.getParameter<bool>("CreateTrendMEs");
  Mod_On_ = conf_.getParameter<bool>("Mod_On");
  xLumiProf = conf_.getParameter<int>("xLumiProf");

  // Event History Producer
  historyProducer_ = conf_.getParameter<edm::InputTag>("HistoryProducer");
  // Apv Phase Producer
  apvPhaseProducer_ = conf_.getParameter<edm::InputTag>("ApvPhaseProducer");

  // Create DCS Status
  bool checkDCS    = conf_.getParameter<bool>("UseDCSFiltering");
  if (checkDCS) dcsStatus_ = new SiStripDCSStatus();
  else dcsStatus_ = 0; 
}
SiStripMonitorDigi::~SiStripMonitorDigi ( )

Definition at line 117 of file SiStripMonitorDigi.cc.

References dcsStatus_.

                                        { 
  if (dcsStatus_) delete dcsStatus_;
}

Member Function Documentation

bool SiStripMonitorDigi::AllDigis ( const edm::EventSetup es) [private]
void SiStripMonitorDigi::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 309 of file SiStripMonitorDigi.cc.

References ecalMGPA::adc(), SiStripMonitorDigi::ModMEs::ADCsCoolestStrip, SiStripMonitorDigi::ModMEs::ADCsHottestStrip, apvPhaseProducer_, createTrendMEs, edm::DetSet< T >::data, dcsStatus_, cond::rpcobgas::detid, digi_detset_handles, SiStripMonitorDigi::ModMEs::DigiADCs, digiFailureMEs, DigiMEs, digiProducerList, digitkhistomapon, eventNb, edm::HandleBase::failedToGet(), MonitorElement::Fill(), TkHistoMap::fill(), fillME(), fillTrend(), folder_organizer, edm::Event::getByLabel(), getDigiSourceIndex(), SiStripDCSStatus::getStatus(), SiStripFolderOrganizer::getSubDetFolderAndTag(), historyProducer_, edm::EventBase::id(), align::invalid, APVCyclePhaseCollection::invalid, edm::HandleBase::isValid(), SiStripMonitorDigi::LayerMEs::LayerADCsCoolestStrip, SiStripMonitorDigi::LayerMEs::LayerADCsCoolestStripTrend, SiStripMonitorDigi::LayerMEs::LayerADCsHottestStrip, SiStripMonitorDigi::LayerMEs::LayerADCsHottestStripTrend, LayerDetMap, SiStripMonitorDigi::LayerMEs::LayerDigiADCProfile, SiStripMonitorDigi::LayerMEs::LayerDigiADCs, SiStripMonitorDigi::LayerMEs::LayerDigiADCsTrend, LayerMEsMap, SiStripMonitorDigi::LayerMEs::LayerNumberOfDigis, SiStripMonitorDigi::LayerMEs::LayerNumberOfDigisProfile, SiStripMonitorDigi::LayerMEs::LayerNumberOfDigisTrend, SiStripMonitorDigi::LayerMEs::LayerStripOccupancy, SiStripMonitorDigi::LayerMEs::LayerStripOccupancyTrend, layerswitchadccooleston, layerswitchadchotteston, layerswitchdigiadcprofon, layerswitchdigiadcson, layerswitchnumdigison, layerswitchnumdigisprofon, layerswitchstripoccupancyon, Association::map, Mod_On_, moduleswitchadccooleston, moduleswitchadchotteston, moduleswitchdigiadcson, moduleswitchnumdigison, moduleswitchnumdigispstripon, moduleswitchstripoccupancyon, APVCyclePhaseCollection::multiphase, APVCyclePhaseCollection::nopartition, NULL, SiStripMonitorDigi::ModMEs::NumberOfDigis, SiStripMonitorDigi::ModMEs::NumberOfDigisPerStrip, edm::EventBase::orbitNumber(), pos, edm::Handle< T >::product(), edm::EventID::run(), runNb, SiStripDetCabling_, SiStripMonitorDigi::ModMEs::StripOccupancy, SiStripMonitorDigi::SubDetMEs::SubDetDigiApvProf, SiStripMonitorDigi::SubDetMEs::SubDetDigiApvTH2, SubDetMEsMap, SubDetPhasePartMap, subdetswitchapvcycleprofon, subdetswitchapvcycleth2on, subdetswitchtotdigiproflson, subdetswitchtotdigiprofon, SiStripMonitorDigi::SubDetMEs::SubDetTotDigiProf, SiStripMonitorDigi::DigiFailureMEs::SubDetTotDigiProfLS, tkmapdigi, and SiStripMonitorDigi::SubDetMEs::totNDigis.

                                                                                   {

  // Filter out events if DCS Event if requested
  if (dcsStatus_ && !dcsStatus_->getStatus(iEvent, iSetup)) return;

  runNb   = iEvent.id().run();
  eventNb++;
  float iOrbitSec      = iEvent.orbitNumber()/11223.0;

  digi_detset_handles.clear();
  for(std::vector<edm::InputTag>::iterator itDigiProducerList = digiProducerList.begin();
     itDigiProducerList != digiProducerList.end(); ++itDigiProducerList ) {

    edm::Handle< edm::DetSetVector<SiStripDigi> > digi_handle;

    iEvent.getByLabel((*itDigiProducerList),digi_handle);
    if (digi_handle.isValid()) digi_detset_handles.push_back(digi_handle.product());
  }    

  // initialise # of clusters to zero
  for (std::map<std::string, SubDetMEs>::iterator iSubdet  = SubDetMEsMap.begin();
       iSubdet != SubDetMEsMap.end(); iSubdet++) {
    iSubdet->second.totNDigis = 0;
  }

  for (std::map<std::string, std::vector< uint32_t > >::const_iterator iterLayer = LayerDetMap.begin();
       iterLayer != LayerDetMap.end(); iterLayer++) {
    
    std::string layer_label = iterLayer->first;    
    std::vector< uint32_t > layer_dets = iterLayer->second;
    std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(layer_label);
      
    //get Layer MEs 
    LayerMEs local_layermes;
    if(iLayerME == LayerMEsMap.end()) continue;
    else local_layermes = iLayerME->second; 
    int largest_adc_layer= 0;
    int smallest_adc_layer= 99999;
    int ndigi_layer = 0;
    
    uint16_t iDet = 0;
    std::string subdet_label = ""; 
    // loop over all modules in the layer
    for (std::vector< uint32_t >::const_iterator iterDets = layer_dets.begin() ; 
         iterDets != layer_dets.end() ; iterDets++) {
      iDet++;
      // detid and type of ME
      uint32_t detid = (*iterDets);
        
      // Get SubDet label once
      if (subdet_label.size() == 0) subdet_label = folder_organizer.getSubDetFolderAndTag(detid).second;

      // DetId and corresponding set of MEs
      std::map<uint32_t, ModMEs >::iterator pos = DigiMEs.find(detid);
      ModMEs local_modmes = pos->second;
        
      // search  digis of detid
      int loc = getDigiSourceIndex(detid); 
      
      int ndigi_det = 0;
      if (loc > -1) ndigi_det = (*(digi_detset_handles[loc]))[detid].size();


      // no digis for this detector module, so fill histogram with 0
      if(Mod_On_ && moduleswitchnumdigison && (local_modmes.NumberOfDigis != NULL))
        (local_modmes.NumberOfDigis)->Fill(ndigi_det); 
      
      if (layerswitchnumdigisprofon) 
        local_layermes.LayerNumberOfDigisProfile->Fill(iDet*1.0,ndigi_det);

      if (digitkhistomapon) tkmapdigi->fill(detid,ndigi_det);

      if (ndigi_det == 0) continue; // no digis for this detid => jump to next step of loop
      
      const edm::DetSet<SiStripDigi> & digi_detset = (*(digi_detset_handles[loc]))[detid]; 
     
      ndigi_layer += ndigi_det; 
      // ADCs
      int largest_adc=(digi_detset.data.begin())->adc();
      int smallest_adc=(digi_detset.data.begin())->adc();
      

      // Check if these parameters are really needed
      float det_occupancy = 0.0;
      
      for(edm::DetSet<SiStripDigi>::const_iterator digiIter = digi_detset.data.begin(); 
          digiIter!= digi_detset.data.end(); digiIter++ ){
        
        int this_adc = digiIter->adc();
        if (this_adc > 0.0) det_occupancy++;
        
        if(this_adc>largest_adc) largest_adc  = this_adc; 
        if(this_adc<smallest_adc) smallest_adc  = this_adc; 

        if(Mod_On_ && moduleswitchnumdigispstripon && (local_modmes.NumberOfDigisPerStrip != NULL) && (this_adc > 0.0) )
          (local_modmes.NumberOfDigisPerStrip)->Fill(digiIter->strip());

        if(Mod_On_ && moduleswitchdigiadcson && (local_modmes.DigiADCs != NULL) )
          (local_modmes.DigiADCs)->Fill(static_cast<float>(this_adc));
        
        //Fill #ADCs for this digi at layer level
        if(layerswitchdigiadcson) {
          fillME(local_layermes.LayerDigiADCs , this_adc);
          if (createTrendMEs) fillTrend(local_layermes.LayerDigiADCsTrend, this_adc, iOrbitSec);
        }
        
        if (layerswitchdigiadcprofon) 
          local_layermes.LayerDigiADCProfile->Fill(iDet*1.0,this_adc);
        
      }//end of loop over digis in this det
      
      // Occupancy
      short nstrips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128;
      if (nstrips > 0 && det_occupancy > 0 ) {
        det_occupancy = det_occupancy/nstrips;
        if (Mod_On_ && moduleswitchstripoccupancyon && (local_modmes.StripOccupancy != NULL))
          (local_modmes.StripOccupancy)->Fill(det_occupancy);
        if (layerswitchstripoccupancyon) {
          fillME(local_layermes.LayerStripOccupancy, det_occupancy);
          if (createTrendMEs) fillTrend(local_layermes.LayerStripOccupancyTrend, det_occupancy, iOrbitSec);
        }
      }
      
      if  (largest_adc > largest_adc_layer) largest_adc_layer = largest_adc;
      if  (smallest_adc < smallest_adc_layer) smallest_adc_layer = smallest_adc;
      
      // nr. of adcs for hottest strip
      if( Mod_On_ && moduleswitchadchotteston && (local_modmes.ADCsHottestStrip != NULL)) 
        (local_modmes.ADCsHottestStrip)->Fill(static_cast<float>(largest_adc));
      
      // nr. of adcs for coolest strip  
      if(Mod_On_ && moduleswitchadccooleston && (local_modmes.ADCsCoolestStrip != NULL)) 
        (local_modmes.ADCsCoolestStrip)->Fill(static_cast<float>(smallest_adc));
      
    }//end of loop over DetIds
    
    if(layerswitchnumdigison) {
      fillME(local_layermes.LayerNumberOfDigis,ndigi_layer);
      if (createTrendMEs) fillTrend(local_layermes.LayerNumberOfDigisTrend, ndigi_layer, iOrbitSec);
    }
    if(layerswitchadchotteston) {
      fillME(local_layermes.LayerADCsHottestStrip,largest_adc_layer);
      if (createTrendMEs) fillTrend(local_layermes.LayerADCsHottestStripTrend, largest_adc_layer, iOrbitSec);
    }
    if(layerswitchadccooleston) {
      fillME(local_layermes.LayerADCsCoolestStrip ,smallest_adc_layer);
      if (createTrendMEs) fillTrend(local_layermes.LayerADCsCoolestStripTrend, smallest_adc_layer, iOrbitSec);
    }
    std::map<std::string, SubDetMEs>::iterator iSubdet  = SubDetMEsMap.find(subdet_label);
    if(iSubdet != SubDetMEsMap.end()) iSubdet->second.totNDigis += ndigi_layer;
  }

    for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin();
         it != SubDetMEsMap.end(); it++) {
      if (subdetswitchtotdigiproflson) {
        if (strcmp(it->first.c_str(),"TEC__side__1")==0){
          digiFailureMEs.SubDetTotDigiProfLS->Fill(1, it->second.totNDigis);
        }else if (strcmp(it->first.c_str(),"TEC__side__2")==0){
          digiFailureMEs.SubDetTotDigiProfLS->Fill(2, it->second.totNDigis);
        }else if (strcmp(it->first.c_str(),"TIB")==0){
          digiFailureMEs.SubDetTotDigiProfLS->Fill(3, it->second.totNDigis);
        }else if (strcmp(it->first.c_str(),"TID__side__1")==0){
          digiFailureMEs.SubDetTotDigiProfLS->Fill(4, it->second.totNDigis);
        }else if (strcmp(it->first.c_str(),"TID__side__2")==0){
          digiFailureMEs.SubDetTotDigiProfLS->Fill(5, it->second.totNDigis);
        }else if (strcmp(it->first.c_str(),"TOB")==0){
          digiFailureMEs.SubDetTotDigiProfLS->Fill(6, it->second.totNDigis);
        }
      }
    }

  // get EventHistory 
  edm::Handle<EventWithHistory> event_history;
  iEvent.getByLabel(historyProducer_,event_history);  

  // get Phase of APV
  edm::Handle<APVCyclePhaseCollection> apv_phase_collection;
  iEvent.getByLabel(apvPhaseProducer_,apv_phase_collection);

  if (event_history.isValid() 
      && !event_history.failedToGet()
      && apv_phase_collection.isValid() 
      && !apv_phase_collection.failedToGet()) {

    
    long long tbx = event_history->absoluteBX();
    float iOrbitSec = iEvent.orbitNumber()/11223.0;

    for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin();
         it != SubDetMEsMap.end(); it++) {

      SubDetMEs subdetmes;
      std::string subdet = it->first;
      subdetmes = it->second;
 
      int the_phase = APVCyclePhaseCollection::invalid;
      long long tbx_corr = tbx;

      if (SubDetPhasePartMap.find(subdet) != SubDetPhasePartMap.end()) the_phase = apv_phase_collection->getPhase(SubDetPhasePartMap[subdet]);
      if(the_phase==APVCyclePhaseCollection::nopartition ||
         the_phase==APVCyclePhaseCollection::multiphase ||
         the_phase==APVCyclePhaseCollection::invalid) the_phase=30;
      tbx_corr  -= the_phase;
      
      if (subdetswitchtotdigiprofon)subdetmes.SubDetTotDigiProf->Fill(iOrbitSec,subdetmes.totNDigis);  
      if (subdetswitchapvcycleprofon)subdetmes.SubDetDigiApvProf->Fill(tbx_corr%70,subdetmes.totNDigis);
      if (subdetswitchapvcycleth2on) subdetmes.SubDetDigiApvTH2->Fill(tbx_corr%70,subdetmes.totNDigis);
    }
  }
}//end of method analyze
void SiStripMonitorDigi::beginJob ( void  ) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 174 of file SiStripMonitorDigi.cc.

                                 {
}
void SiStripMonitorDigi::beginLuminosityBlock ( const edm::LuminosityBlock lb,
const edm::EventSetup es 
) [virtual]
void SiStripMonitorDigi::beginRun ( const edm::Run run,
const edm::EventSetup es 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 122 of file SiStripMonitorDigi.cc.

References createMEs(), DigiMEs, edm::EventSetup::get(), m_cacheID_, reset_each_run, ResetModuleMEs(), and show_mechanical_structure_view.

                                                                           {

  if (show_mechanical_structure_view) {
    unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier();
    if (m_cacheID_ != cacheID) {
      m_cacheID_ = cacheID;       
      edm::LogInfo("SiStripMonitorDigi") <<"SiStripMonitorDigi::beginRun: " 
                                         << " Creating MEs for new Cabling ";     
      createMEs(es);
    } 
  } else if (reset_each_run) {
    edm::LogInfo("SiStripMonitorDigi") <<"SiStripMonitorDigi::beginRun: " 
                                       << " Resetting MEs ";        
    for (std::map<uint32_t, ModMEs >::const_iterator idet = DigiMEs.begin() ; idet!=DigiMEs.end() ; idet++) {
      ResetModuleMEs(idet->first);
    }
  }
}
void SiStripMonitorDigi::bookLayer ( ) [private]
MonitorElement * SiStripMonitorDigi::bookME1D ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 563 of file SiStripMonitorDigi.cc.

References DQMStore::book1D(), conf_, dqmStore_, and edm::ParameterSet::getParameter().

Referenced by createLayerMEs(), and createModuleMEs().

{
  edm::ParameterSet Parameters =  conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
  return dqmStore_->book1D(HistoName,HistoName,
                           Parameters.getParameter<int32_t>("Nbinx"),
                           Parameters.getParameter<double>("xmin"),
                           Parameters.getParameter<double>("xmax")
                           );
}
MonitorElement * SiStripMonitorDigi::bookMETrend ( const char *  ParameterSetLabel,
const char *  HistoName 
) [private]

Definition at line 542 of file SiStripMonitorDigi.cc.

References DQMStore::bookProfile(), conf_, MonitorElement::DQM_KIND_TPROFILE, dqmStore_, edm::ParameterSet::getParameter(), and MonitorElement::setAxisTitle().

Referenced by createLayerMEs().

{
  edm::ParameterSet ParametersTrend =  conf_.getParameter<edm::ParameterSet>("Trending");
  MonitorElement* me = dqmStore_->bookProfile(HistoName,HistoName,
                                              ParametersTrend.getParameter<int32_t>("Nbins"),
                                              //                                              0,
                                              ParametersTrend.getParameter<double>("xmin"),
                                              ParametersTrend.getParameter<double>("xmax"),
                                              //                                              ParametersTrend.getParameter<int32_t>("Nbins"),
                                              100, //that parameter should not be there !?
                                              ParametersTrend.getParameter<double>("ymin"),
                                              ParametersTrend.getParameter<double>("ymax"),
                                              "" );
  if(!me) return me;

  me->setAxisTitle("Event Time in Seconds",1);
  if (me->kind() == MonitorElement::DQM_KIND_TPROFILE) me->getTH1()->SetBit(TH1::kCanRebin);
  return me;
}
void SiStripMonitorDigi::bookTrendMEs ( TString  name,
int32_t  layer,
uint32_t  id,
std::string  flag 
) [private]
void SiStripMonitorDigi::createLayerMEs ( std::string  label,
int  ndet 
) [private]

Definition at line 645 of file SiStripMonitorDigi.cc.

References bookME1D(), bookMETrend(), DQMStore::bookProfile(), SiStripHistoId::createHistoLayer(), createTrendMEs, dqmStore_, label, SiStripMonitorDigi::LayerMEs::LayerADCsCoolestStrip, SiStripMonitorDigi::LayerMEs::LayerADCsCoolestStripTrend, SiStripMonitorDigi::LayerMEs::LayerADCsHottestStrip, SiStripMonitorDigi::LayerMEs::LayerADCsHottestStripTrend, SiStripMonitorDigi::LayerMEs::LayerDigiADCProfile, SiStripMonitorDigi::LayerMEs::LayerDigiADCs, SiStripMonitorDigi::LayerMEs::LayerDigiADCsTrend, LayerMEsMap, SiStripMonitorDigi::LayerMEs::LayerNumberOfDigis, SiStripMonitorDigi::LayerMEs::LayerNumberOfDigisProfile, SiStripMonitorDigi::LayerMEs::LayerNumberOfDigisTrend, SiStripMonitorDigi::LayerMEs::LayerStripOccupancy, SiStripMonitorDigi::LayerMEs::LayerStripOccupancyTrend, layerswitchadccooleston, layerswitchadchotteston, layerswitchdigiadcprofon, layerswitchdigiadcson, layerswitchnumdigison, layerswitchnumdigisprofon, and layerswitchstripoccupancyon.

Referenced by createMEs().

                                                                  {

  std::map<std::string, LayerMEs>::iterator iLayerME  = LayerMEsMap.find(label);
  if(iLayerME==LayerMEsMap.end()){
    SiStripHistoId hidmanager;
    LayerMEs layerMEs; 
    layerMEs.LayerNumberOfDigis = 0;
    layerMEs.LayerNumberOfDigisTrend = 0;
    layerMEs.LayerADCsHottestStrip = 0;
    layerMEs.LayerADCsHottestStripTrend = 0;
    layerMEs.LayerADCsCoolestStrip = 0;
    layerMEs.LayerADCsCoolestStripTrend = 0;
    layerMEs.LayerDigiADCs = 0;
    layerMEs.LayerDigiADCsTrend = 0;
    layerMEs.LayerStripOccupancy = 0;
    layerMEs.LayerStripOccupancyTrend = 0;
    layerMEs.LayerNumberOfDigisProfile = 0;
    layerMEs.LayerDigiADCProfile = 0;
    

    //#Digis
    if(layerswitchnumdigison) {
      layerMEs.LayerNumberOfDigis=bookME1D("TH1NumberOfDigis", hidmanager.createHistoLayer("Summary_TotalNumberOfDigis","layer",label,"").c_str()); 
      if (createTrendMEs) layerMEs.LayerNumberOfDigisTrend=bookMETrend("TH1NumberOfDigis", hidmanager.createHistoLayer("Trend_NumberOfDigis","layer",label,"").c_str()); 
    }

    //#ADCs for hottest strip
    if(layerswitchadchotteston) {
      layerMEs.LayerADCsHottestStrip=bookME1D("TH1ADCsHottestStrip", hidmanager.createHistoLayer("Summary_ADCsHottestStrip","layer",label,"").c_str()); 
      if (createTrendMEs) layerMEs.LayerADCsHottestStripTrend=bookMETrend("TH1ADCsHottestStrip", hidmanager.createHistoLayer("Trend_ADCsHottestStrip","layer",label,"").c_str()); 
    }

    //#ADCs for coolest strip
    if(layerswitchadccooleston) {
      layerMEs.LayerADCsCoolestStrip=bookME1D("TH1ADCsCoolestStrip", hidmanager.createHistoLayer("Summary_ADCsCoolestStrip","layer",label,"").c_str());
      if (createTrendMEs) layerMEs.LayerADCsCoolestStripTrend=bookMETrend("TH1ADCsCoolestStrip", hidmanager.createHistoLayer("Trend_ADCsCoolestStrip","layer",label,"").c_str());
    }

    //#ADCs for each digi
    if(layerswitchdigiadcson) {
      layerMEs.LayerDigiADCs=bookME1D("TH1DigiADCs", hidmanager.createHistoLayer("Summary_DigiADCs","layer",label,"").c_str());
      if (createTrendMEs) layerMEs.LayerDigiADCsTrend=bookMETrend("TH1DigiADCs", hidmanager.createHistoLayer("Trend_DigiADCs","layer",label,"").c_str());
    }

    //Strip Occupancy
    if(layerswitchstripoccupancyon) {
      layerMEs.LayerStripOccupancy=bookME1D("TH1StripOccupancy", hidmanager.createHistoLayer("Summary_StripOccupancy","layer",label,"").c_str());  
      if (createTrendMEs) layerMEs.LayerStripOccupancyTrend=bookMETrend("TH1StripOccupancy", hidmanager.createHistoLayer("Trend_StripOccupancy","layer",label,"").c_str());  
      
    }
    // # of Digis 
    if(layerswitchnumdigisprofon) {
      std::string hid = hidmanager.createHistoLayer("NumberOfDigiProfile","layer",label,"");
      layerMEs.LayerNumberOfDigisProfile = dqmStore_->bookProfile(hid, hid, ndets, 0.5, ndets+0.5,21, -0.5, 200.5);
    }

    // # of Digis 
    if(layerswitchdigiadcprofon) {
      std::string hid = hidmanager.createHistoLayer("DigiADCProfile","layer",label,"");      
      layerMEs.LayerDigiADCProfile = dqmStore_->bookProfile(hid, hid, ndets, 0.5, ndets+0.5, 64, -0.5, 255.5);      
    }

    LayerMEsMap[label]=layerMEs;
  }
}
void SiStripMonitorDigi::createMEs ( const edm::EventSetup es) [private]

Definition at line 179 of file SiStripMonitorDigi.cc.

References abs, SiStripMonitorDigi::ModMEs::ADCsCoolestStrip, SiStripMonitorDigi::ModMEs::ADCsHottestStrip, DQMStore::book2D(), DQMStore::bookProfile(), conf_, createLayerMEs(), createModuleMEs(), createSubDetMEs(), cond::rpcobgas::detid, SiStripMonitorDigi::ModMEs::DigiADCs, digiFailureMEs, DigiMEs, digitkhistomapon, dqmStore_, folder_organizer, edm::EventSetup::get(), SiStripFolderOrganizer::getLayerFolderName(), edm::ParameterSet::getParameter(), SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripFolderOrganizer::getSubDetFolderAndTag(), SiStripHistoId::getSubdetid(), SiStripSubStructure::getTECDetectors(), SiStripSubStructure::getTIBDetectors(), SiStripSubStructure::getTIDDetectors(), SiStripSubStructure::getTOBDetectors(), label, LayerDetMap, LayerMEsMap, Mod_On_, SiStripMonitorDigi::ModMEs::NumberOfDigis, SiStripMonitorDigi::ModMEs::NumberOfDigisPerStrip, reset_each_run, ResetModuleMEs(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), SiStripFolderOrganizer::setDetectorFolder(), SiStripFolderOrganizer::setLayerFolder(), show_mechanical_structure_view, SiStripDetCabling_, SiStripMonitorDigi::ModMEs::StripOccupancy, SiStripMonitorDigi::DigiFailureMEs::SubDetDigiFailures, SubDetMEsMap, subdetswitchtotdigifailureon, subdetswitchtotdigiproflson, SiStripMonitorDigi::DigiFailureMEs::SubDetTotDigiProfLS, and tkmapdigi.

Referenced by beginRun().

                                                         {

  if ( show_mechanical_structure_view ){
    // take from eventSetup the SiStripDetCabling object - here will use SiStripDetControl later on
    es.get<SiStripDetCablingRcd>().get(SiStripDetCabling_);
    
    // get list of active detectors from SiStripDetCabling
    std::vector<uint32_t> activeDets; 
    activeDets.clear(); // just in case
    SiStripDetCabling_->addActiveDetectorsRawIds(activeDets);

    SiStripSubStructure substructure;

    // remove any eventual zero elements - there should be none, but just in case
    for(std::vector<uint32_t>::iterator idets = activeDets.begin(); idets != activeDets.end(); idets++){
      if(*idets == 0) activeDets.erase(idets);
    }
    
    // create SiStripFolderOrganizer
    SiStripFolderOrganizer folder_organizer;

    // Create TkHistoMap for Digi
    if (digitkhistomapon) tkmapdigi = new TkHistoMap("SiStrip/TkHisto","TkHMap_NumberOfDigi",0.0,1);
    
    std::vector<uint32_t> tibDetIds;
    // loop over detectors and book MEs
    edm::LogInfo("SiStripTkDQM|SiStripMonitorDigi")<<"nr. of activeDets:  "<<activeDets.size();
    for(std::vector<uint32_t>::const_iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){

      uint32_t detid = (*detid_iterator);

      ModMEs local_modmes;
      local_modmes.NumberOfDigis = 0;
      local_modmes.NumberOfDigisPerStrip = 0;
      local_modmes.ADCsHottestStrip = 0;
      local_modmes.ADCsCoolestStrip = 0;
      local_modmes.DigiADCs = 0;
      local_modmes.StripOccupancy = 0;

      if (Mod_On_) {
        // set appropriate folder using SiStripFolderOrganizer
        folder_organizer.setDetectorFolder(detid); // pass the detid to this method
        if (reset_each_run) ResetModuleMEs(detid);
        createModuleMEs(local_modmes, detid);
        // append to DigiMEs
        DigiMEs.insert( std::make_pair(detid, local_modmes));
      }

      // Create Layer Level MEs if they are not created already
      std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid);
      SiStripHistoId hidmanager;
      std::string label = hidmanager.getSubdetid(detid,false);
      
      // get detids for the layer
      std::map<std::string, LayerMEs>::iterator iLayerME  = LayerMEsMap.find(label);
      if(iLayerME==LayerMEsMap.end()) {
        int32_t lnumber = det_layer_pair.second;
        std::vector<uint32_t> layerDetIds;
        if (det_layer_pair.first == "TIB") {
          substructure.getTIBDetectors(activeDets,layerDetIds,lnumber,0,0,0);
        } else if (det_layer_pair.first == "TOB") {
          substructure.getTOBDetectors(activeDets,layerDetIds,lnumber,0,0);
        } else if (det_layer_pair.first == "TID" && lnumber > 0) {
          substructure.getTIDDetectors(activeDets,layerDetIds,2,abs(lnumber),0,0);
        } else if (det_layer_pair.first == "TID" && lnumber < 0) {
          substructure.getTIDDetectors(activeDets,layerDetIds,1,abs(lnumber),0,0);
        } else if (det_layer_pair.first == "TEC" && lnumber > 0) {
          substructure.getTECDetectors(activeDets,layerDetIds,2,abs(lnumber),0,0,0,0);
        } else if (det_layer_pair.first == "TEC" && lnumber < 0) {
          substructure.getTECDetectors(activeDets,layerDetIds,1,abs(lnumber),0,0,0,0);
        }

        LayerDetMap[label] = layerDetIds;

        // book Layer plots      
        folder_organizer.setLayerFolder(detid,det_layer_pair.second); 
        createLayerMEs(label, layerDetIds.size());
      }
      
      // book sub-detector plots
      std::pair<std::string,std::string> sdet_pair = folder_organizer.getSubDetFolderAndTag(detid);
      if (SubDetMEsMap.find(sdet_pair.second) == SubDetMEsMap.end()){
        dqmStore_->setCurrentFolder(sdet_pair.first);
        createSubDetMEs(sdet_pair.second);        
      }

    }//end of loop over detectors
    //
    // Book new histogram to monitor digi in last LS
    //
    digiFailureMEs.SubDetTotDigiProfLS = 0;
    digiFailureMEs.SubDetDigiFailures  = 0;
    std::stringstream ss;
    folder_organizer.getLayerFolderName(ss, 0);
    dqmStore_->setCurrentFolder(ss.str().c_str());
    if (subdetswitchtotdigiproflson) {
      const char* HistoName = "NumberOfDigisInLastLS";
      digiFailureMEs.SubDetTotDigiProfLS= dqmStore_->bookProfile(HistoName, HistoName,
                                                               6,0.5,6.5,
                                          100, 0., 10000., "" );
      digiFailureMEs.SubDetTotDigiProfLS->setBinLabel(1, std::string("TECB"));
      digiFailureMEs.SubDetTotDigiProfLS->setBinLabel(2, std::string("TECF"));
      digiFailureMEs.SubDetTotDigiProfLS->setBinLabel(3, std::string("TIB"));
      digiFailureMEs.SubDetTotDigiProfLS->setBinLabel(4, std::string("TIDB"));
      digiFailureMEs.SubDetTotDigiProfLS->setBinLabel(5, std::string("TIDF"));
      digiFailureMEs.SubDetTotDigiProfLS->setBinLabel(6, std::string("TOB"));
    }

    if (subdetswitchtotdigifailureon) {
      edm::ParameterSet Parameters =  conf_.getParameter<edm::ParameterSet>("TotalNumberOfDigisFailure");
      std::string HistoName = "DataPresentInLastLS";
      digiFailureMEs.SubDetDigiFailures = dqmStore_->book2D(HistoName,HistoName,
                                                       Parameters.getParameter<int32_t>("Nbins"),
                                                       Parameters.getParameter<double>("xmin"),
                                                       Parameters.getParameter<double>("xmax"),
                                                       Parameters.getParameter<int32_t>("Nbinsy"),
                                                       Parameters.getParameter<double>("ymin"),
                                                       Parameters.getParameter<double>("ymax"));
      digiFailureMEs.SubDetDigiFailures->setBinLabel(1, std::string("TECB"));
      digiFailureMEs.SubDetDigiFailures->setBinLabel(2, std::string("TECF"));
      digiFailureMEs.SubDetDigiFailures->setBinLabel(3, std::string("TIB"));
      digiFailureMEs.SubDetDigiFailures->setBinLabel(4, std::string("TIDB"));
      digiFailureMEs.SubDetDigiFailures->setBinLabel(5, std::string("TIDF"));
      digiFailureMEs.SubDetDigiFailures->setBinLabel(6, std::string("TOB"));
    }
  }//end of if

}//end of method
void SiStripMonitorDigi::createModuleMEs ( ModMEs mod_single,
uint32_t  detid 
) [private]

Definition at line 583 of file SiStripMonitorDigi.cc.

References SiStripMonitorDigi::ModMEs::ADCsCoolestStrip, SiStripMonitorDigi::ModMEs::ADCsHottestStrip, DQMStore::book1D(), bookME1D(), SiStripHistoId::createHistoId(), SiStripMonitorDigi::ModMEs::DigiADCs, dqmStore_, MonitorElement::getTH1(), moduleswitchadccooleston, moduleswitchadchotteston, moduleswitchdigiadcson, moduleswitchnumdigison, moduleswitchnumdigispstripon, moduleswitchstripoccupancyon, SiStripMonitorDigi::ModMEs::NumberOfDigis, SiStripMonitorDigi::ModMEs::NumberOfDigisPerStrip, MonitorElement::setAxisTitle(), SiStripDetCabling_, SiStripMonitorDigi::ModMEs::StripOccupancy, and DQMStore::tag().

Referenced by createMEs().

                                                                           {

  // use SistripHistoId for producing histogram id (and title)
  SiStripHistoId hidmanager;
  std::string hid;
  
  //nr. of digis per module
  if(moduleswitchnumdigison) {
    hid = hidmanager.createHistoId("NumberOfDigis","det",detid);
    mod_single.NumberOfDigis = dqmStore_->book1D(hid, hid, 21, -0.5, 20.5);
    dqmStore_->tag(mod_single.NumberOfDigis, detid);
    mod_single.NumberOfDigis->setAxisTitle("number of digis in one detector module");
    mod_single.NumberOfDigis->getTH1()->StatOverflows(kTRUE);  // over/underflows in Mean calculation
  }
  
  //nr. of digis per strip in module
  if(moduleswitchnumdigispstripon){
    hid = hidmanager.createHistoId("NumberOfDigisPerStrip","det",detid);
    short nstrips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128; 
    mod_single.NumberOfDigisPerStrip = dqmStore_->book1D(hid, hid, nstrips, -0.5, nstrips+0.5);
    dqmStore_->tag(mod_single.NumberOfDigisPerStrip, detid);
    mod_single.NumberOfDigisPerStrip->setAxisTitle("number of (digis > 0) per strip");
    mod_single.NumberOfDigisPerStrip->getTH1()->StatOverflows(kTRUE);  // over/underflows in Mean calculation
  }
  //#ADCs for hottest strip
  if(moduleswitchadchotteston) {
    hid = hidmanager.createHistoId("ADCsHottestStrip","det",detid);
    mod_single.ADCsHottestStrip = bookME1D("TH1ADCsHottestStrip", hid.c_str());
    dqmStore_->tag(mod_single.ADCsHottestStrip, detid); // 6 APVs -> 768 strips
    mod_single.ADCsHottestStrip->setAxisTitle("number of ADCs for hottest strip");
  }
  
  //#ADCs for coolest strip
  if(moduleswitchadccooleston) {
    hid = hidmanager.createHistoId("ADCsCoolestStrip","det",detid);
    mod_single.ADCsCoolestStrip = bookME1D("TH1ADCsCoolestStrip", hid.c_str());
    dqmStore_->tag(mod_single.ADCsCoolestStrip, detid);
    mod_single.ADCsCoolestStrip->setAxisTitle("number of ADCs for coolest strip");
  }
  
  //#ADCs for each digi
  if(moduleswitchdigiadcson) {
    hid = hidmanager.createHistoId("DigiADCs","det",detid);
    mod_single.DigiADCs = bookME1D("TH1DigiADCs", hid.c_str());
    dqmStore_->tag(mod_single.DigiADCs, detid);
    mod_single.DigiADCs->setAxisTitle("number of ADCs for each digi");
  }
  
  //Strip occupancy
  if(moduleswitchstripoccupancyon) {
    hid = hidmanager.createHistoId("StripOccupancy","det",detid);
    mod_single.StripOccupancy = bookME1D("TH1StripOccupancy", hid.c_str());
    dqmStore_->tag(mod_single.StripOccupancy, detid);
    mod_single.StripOccupancy->setAxisTitle("strip occupancy");
  }
  
}
void SiStripMonitorDigi::createSubDetMEs ( std::string  label) [private]

Definition at line 713 of file SiStripMonitorDigi.cc.

References DQMStore::book2D(), DQMStore::bookProfile(), conf_, MonitorElement::DQM_KIND_TPROFILE, dqmStore_, edm::ParameterSet::getParameter(), MonitorElement::getTH1(), MonitorElement::kind(), label, MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), SiStripMonitorDigi::SubDetMEs::SubDetDigiApvProf, SiStripMonitorDigi::SubDetMEs::SubDetDigiApvTH2, SubDetMEsMap, subdetswitchapvcycleprofon, subdetswitchapvcycleth2on, subdetswitchtotdigiprofon, SiStripMonitorDigi::SubDetMEs::SubDetTotDigiProf, and SiStripMonitorDigi::SubDetMEs::totNDigis.

Referenced by createMEs().

                                                        {

  SubDetMEs subdetMEs; 
  subdetMEs.totNDigis         = 0;
  subdetMEs.SubDetTotDigiProf = 0;
  subdetMEs.SubDetDigiApvProf = 0;
  subdetMEs.SubDetDigiApvTH2  = 0;
  
  std::string HistoName;
  
  // Total Number of Digi - Profile
  if(subdetswitchtotdigiprofon){
    edm::ParameterSet Parameters =  conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfDigis");
    HistoName = "TotalNumberOfDigiProfile__" + label;
    subdetMEs.SubDetTotDigiProf=dqmStore_->bookProfile(HistoName,HistoName,
                                                       Parameters.getParameter<int32_t>("Nbins"),
                                                       Parameters.getParameter<double>("xmin"),
                                                       Parameters.getParameter<double>("xmax"),
                                                       100, //that parameter should not be there !?
                                                       Parameters.getParameter<double>("ymin"),
                                                       Parameters.getParameter<double>("ymax"),
                                                       "" );
    subdetMEs.SubDetTotDigiProf->setAxisTitle("Event Time in Seconds",1);
    if (subdetMEs.SubDetTotDigiProf->kind() == MonitorElement::DQM_KIND_TPROFILE) subdetMEs.SubDetTotDigiProf->getTH1()->SetBit(TH1::kCanRebin);
  }
  
  // Number of Digi vs Bx - Profile
  if(subdetswitchapvcycleprofon){
    edm::ParameterSet Parameters =  conf_.getParameter<edm::ParameterSet>("TProfDigiApvCycle");
    HistoName = "Digi_vs_ApvCycle__" + label;
    subdetMEs.SubDetDigiApvProf=dqmStore_->bookProfile(HistoName,HistoName,
                                                       Parameters.getParameter<int32_t>("Nbins"),
                                                       Parameters.getParameter<double>("xmin"),
                                                       Parameters.getParameter<double>("xmax"),
                                                       200, //that parameter should not be there !?
                                                       Parameters.getParameter<double>("ymin"),
                                                       Parameters.getParameter<double>("ymax"),
                                                       "" );
    subdetMEs.SubDetDigiApvProf->setAxisTitle("ApvCycle (Corrected Absolute Bx % 70)",1);
  }
  
  // Number of Digi vs Bx - TH2
  if(subdetswitchapvcycleth2on){
    edm::ParameterSet Parameters =  conf_.getParameter<edm::ParameterSet>("TH2DigiApvCycle");
    dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
    HistoName = "Digi_vs_ApvCycle_2D__" + label;
    // Adjusting the scale for 2D histogram
    double h2ymax = 9999.0;
    double yfact = Parameters.getParameter<double>("yfactor");
    if(label.find("TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
    else if (label.find("TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
    else if (label.find("TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
    else if (label.find("TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
    subdetMEs.SubDetDigiApvTH2=dqmStore_->book2D(HistoName,HistoName,
                                                 Parameters.getParameter<int32_t>("Nbins"),
                                                 Parameters.getParameter<double>("xmin"),
                                                 Parameters.getParameter<double>("xmax"),
                                                 Parameters.getParameter<int32_t>("Nbinsy"), //it was 100 that parameter should not be there !?
                                                 Parameters.getParameter<double>("ymin"),
                                                 h2ymax);
    subdetMEs.SubDetDigiApvTH2->setAxisTitle("absolute Bx mod(70)",1);
  }
  SubDetMEsMap[label]=subdetMEs;
}
void SiStripMonitorDigi::createSubDetTH2 ( std::string  label) [private]
void SiStripMonitorDigi::endJob ( void  ) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 520 of file SiStripMonitorDigi.cc.

References conf_, dqmStore_, edm::ParameterSet::getParameter(), ExpressReco_HICollisions_FallBack::outputFileName, and DQMStore::save().

                                   {
  bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
  std::string outputFileName = conf_.getParameter<std::string>("OutputFileName");

  // save histograms in a file
  if(outputMEsInRootFile)     dqmStore_->save(outputFileName);
  
}//end of method
void SiStripMonitorDigi::endLuminosityBlock ( const edm::LuminosityBlock lb,
const edm::EventSetup es 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 155 of file SiStripMonitorDigi.cc.

References digiFailureMEs, dqmStore_, DQMStore::get(), MonitorElement::getBinContent(), edm::LuminosityBlockBase::id(), MonitorElement::Reset(), SiStripMonitorDigi::DigiFailureMEs::SubDetDigiFailures, subdetswitchtotdigifailureon, relativeConstraints::value, and xLumiProf.

                                                                                                 {
  if(lb.id().luminosityBlock() % xLumiProf == 0){
    if (subdetswitchtotdigifailureon){
      if (digiFailureMEs.SubDetDigiFailures) digiFailureMEs.SubDetDigiFailures->Reset();
      MonitorElement * me = dqmStore_->get("SiStrip/MechanicalView/NumberOfDigisInLastLS");     
      if (me){
        for (int ibin = 1; ibin<7;ibin++){
          float value = me->getBinContent(ibin);
          if (value < 50.){
            digiFailureMEs.SubDetDigiFailures -> Fill(ibin,0);
          }else{
            digiFailureMEs.SubDetDigiFailures -> Fill(ibin,1);
          }
        }
      }
    }
  }
}
void SiStripMonitorDigi::endRun ( const edm::Run ,
const edm::EventSetup  
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 142 of file SiStripMonitorDigi.cc.

                                                                  {
}
void SiStripMonitorDigi::fillDigiADCsMEs ( int  value,
std::string  name 
) [private]
void SiStripMonitorDigi::fillME ( MonitorElement ME,
float  value1,
float  value2 
) [inline, private]

Definition at line 87 of file SiStripMonitorDigi.h.

References MonitorElement::Fill().

{if (ME!=0)ME->Fill(value1,value2);}
void SiStripMonitorDigi::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3 
) [inline, private]

Definition at line 88 of file SiStripMonitorDigi.h.

References MonitorElement::Fill().

{if (ME!=0)ME->Fill(value1,value2,value3);}
void SiStripMonitorDigi::fillME ( MonitorElement ME,
float  value1 
) [inline, private]

Definition at line 86 of file SiStripMonitorDigi.h.

References MonitorElement::Fill().

Referenced by analyze().

{if (ME!=0)ME->Fill(value1);}
void SiStripMonitorDigi::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3,
float  value4 
) [inline, private]

Definition at line 89 of file SiStripMonitorDigi.h.

References MonitorElement::Fill().

{if (ME!=0)ME->Fill(value1,value2,value3,value4);}
void SiStripMonitorDigi::fillTrend ( MonitorElement me,
float  value,
float  timeinorbit 
) [private]

Definition at line 574 of file SiStripMonitorDigi.cc.

References MonitorElement::Fill().

Referenced by analyze().

{
  if(!me) return;
  me->Fill(timeinorbit,value);
}
int SiStripMonitorDigi::getDigiSourceIndex ( uint32_t  id) [private]

Definition at line 780 of file SiStripMonitorDigi.cc.

References digi_detset_handles, end, and tests::location.

Referenced by analyze().

                                                      {
  int location = -1;
  for (unsigned int ival = 0; ival <  digi_detset_handles.size(); ++ival){
    edm::DetSetVector<SiStripDigi>::const_iterator isearch = digi_detset_handles[ival]->find(id); 
    if(isearch != digi_detset_handles[ival]->end()) {
      location = ival;
      break;
    }
  }
  return location;
}
void SiStripMonitorDigi::ResetModuleMEs ( uint32_t  idet) [private]

Member Data Documentation

Definition at line 157 of file SiStripMonitorDigi.h.

Referenced by analyze(), and SiStripMonitorDigi().

Definition at line 103 of file SiStripMonitorDigi.h.

Definition at line 153 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 159 of file SiStripMonitorDigi.h.

Referenced by analyze(), SiStripMonitorDigi(), and ~SiStripMonitorDigi().

std::map<std::pair<std::string,int32_t>,bool> SiStripMonitorDigi::DetectedLayers [private]

Definition at line 113 of file SiStripMonitorDigi.h.

Definition at line 114 of file SiStripMonitorDigi.h.

Referenced by analyze(), and getDigiSourceIndex().

Definition at line 109 of file SiStripMonitorDigi.h.

Referenced by analyze(), beginLuminosityBlock(), createMEs(), and endLuminosityBlock().

std::map<uint32_t, ModMEs> SiStripMonitorDigi::DigiMEs [private]

Definition at line 102 of file SiStripMonitorDigi.h.

Referenced by analyze(), beginRun(), createMEs(), and ResetModuleMEs().

Definition at line 101 of file SiStripMonitorDigi.h.

Referenced by analyze(), and SiStripMonitorDigi().

Definition at line 152 of file SiStripMonitorDigi.h.

Referenced by analyze(), createMEs(), and SiStripMonitorDigi().

Definition at line 122 of file SiStripMonitorDigi.h.

Referenced by analyze(), and SiStripMonitorDigi().

Definition at line 123 of file SiStripMonitorDigi.h.

Referenced by SiStripMonitorDigi().

Definition at line 112 of file SiStripMonitorDigi.h.

Referenced by analyze(), and createMEs().

Definition at line 156 of file SiStripMonitorDigi.h.

Referenced by analyze(), and SiStripMonitorDigi().

std::map<std::string, std::vector< uint32_t > > SiStripMonitorDigi::LayerDetMap [private]

Definition at line 105 of file SiStripMonitorDigi.h.

Referenced by analyze(), and createMEs().

std::map<std::string, LayerMEs> SiStripMonitorDigi::LayerMEsMap [private]

Definition at line 106 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and createMEs().

Definition at line 128 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 127 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 132 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 129 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 126 of file SiStripMonitorDigi.h.

Definition at line 125 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 131 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

Definition at line 130 of file SiStripMonitorDigi.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorDigi().

unsigned long long SiStripMonitorDigi::m_cacheID_ [private]

Definition at line 116 of file SiStripMonitorDigi.h.

Referenced by beginRun().

Definition at line 150 of file SiStripMonitorDigi.h.

Referenced by analyze(), createMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

std::vector<uint32_t> SiStripMonitorDigi::ModulesToBeExcluded_ [private]

Definition at line 118 of file SiStripMonitorDigi.h.

Definition at line 137 of file SiStripMonitorDigi.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

Definition at line 136 of file SiStripMonitorDigi.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

Definition at line 138 of file SiStripMonitorDigi.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

Definition at line 134 of file SiStripMonitorDigi.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

Definition at line 135 of file SiStripMonitorDigi.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

Definition at line 139 of file SiStripMonitorDigi.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorDigi().

TString SiStripMonitorDigi::name [private]

Definition at line 111 of file SiStripMonitorDigi.h.

Definition at line 103 of file SiStripMonitorDigi.h.

Referenced by beginRun(), and createMEs().

Definition at line 122 of file SiStripMonitorDigi.h.

Referenced by analyze().

Definition at line 103 of file SiStripMonitorDigi.h.

Definition at line 103 of file SiStripMonitorDigi.h.

Definition at line 103 of file SiStripMonitorDigi.h.

Referenced by beginRun(), and createMEs().

Definition at line 103 of file SiStripMonitorDigi.h.

Definition at line 117 of file SiStripMonitorDigi.h.

Referenced by analyze(), createMEs(), and createModuleMEs().

std::map<std::string, SubDetMEs> SiStripMonitorDigi::SubDetMEsMap [private]

Definition at line 107 of file SiStripMonitorDigi.h.

Referenced by analyze(), createMEs(), and createSubDetMEs().

std::map<std::string, std::string> SiStripMonitorDigi::SubDetPhasePartMap [private]

Definition at line 108 of file SiStripMonitorDigi.h.

Referenced by analyze(), and SiStripMonitorDigi().

Definition at line 142 of file SiStripMonitorDigi.h.

Referenced by analyze(), createSubDetMEs(), and SiStripMonitorDigi().

Definition at line 143 of file SiStripMonitorDigi.h.

Referenced by analyze(), createSubDetMEs(), and SiStripMonitorDigi().

Definition at line 146 of file SiStripMonitorDigi.h.

Referenced by createMEs(), endLuminosityBlock(), and SiStripMonitorDigi().

Definition at line 145 of file SiStripMonitorDigi.h.

Referenced by analyze(), beginLuminosityBlock(), createMEs(), and SiStripMonitorDigi().

Definition at line 141 of file SiStripMonitorDigi.h.

Referenced by analyze(), createSubDetMEs(), and SiStripMonitorDigi().

Definition at line 120 of file SiStripMonitorDigi.h.

Referenced by analyze(), and createMEs().

std::string SiStripMonitorDigi::topDir [private]

Definition at line 155 of file SiStripMonitorDigi.h.