CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

SiStripDCSStatus Class Reference

#include <SiStripDCSStatus.h>

List of all members.

Public Member Functions

bool getStatus (edm::Event const &e, edm::EventSetup const &eSetup)
 SiStripDCSStatus ()
 ~SiStripDCSStatus ()

Private Member Functions

void initialise (edm::Event const &e, edm::EventSetup const &eSetup)

Private Attributes

bool initialised
bool rawdataAbsent
bool statusTECB
bool statusTECF
bool statusTIBTID
bool statusTOB
bool TECBinDAQ
bool TECFinDAQ
bool TIBTIDinDAQ
bool TOBinDAQ
bool trackerAbsent

Detailed Description

Definition at line 7 of file SiStripDCSStatus.h.


Constructor & Destructor Documentation

SiStripDCSStatus::SiStripDCSStatus ( )

Definition at line 27 of file SiStripDCSStatus.cc.

                                   :
  TIBTIDinDAQ(false),
  TOBinDAQ(false),
  TECFinDAQ(false),
  TECBinDAQ(false),
  trackerAbsent(false),
  rawdataAbsent(true),
  initialised(false) {
}
SiStripDCSStatus::~SiStripDCSStatus ( )

Definition at line 39 of file SiStripDCSStatus.cc.

                                    {
}

Member Function Documentation

bool SiStripDCSStatus::getStatus ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
)

Definition at line 44 of file SiStripDCSStatus.cc.

References edm::Event::getByLabel(), initialise(), initialised, edm::HandleBase::isValid(), LogDebug, rawdataAbsent, statusTECB, statusTECF, statusTIBTID, statusTOB, TECBinDAQ, TECFinDAQ, DcsStatus::TECm, DcsStatus::TECp, DcsStatus::TIBTID, TIBTIDinDAQ, DcsStatus::TOB, TOBinDAQ, and trackerAbsent.

Referenced by SiStripMonitorCluster::analyze(), SiStripMonitorDigi::analyze(), SiStripMonitorTrack::analyze(), and SiStripDCSFilter::filter().

                                                                              {

  bool retVal = true;
  if (!initialised) initialise(e, eSetup);

  edm::Handle<DcsStatusCollection> dcsStatus;
  e.getByLabel("scalersRawToDigi", dcsStatus);
  if ( trackerAbsent || !dcsStatus.isValid())  return retVal;
  if ((*dcsStatus).size() == 0) return retVal;

  statusTIBTID = true;
  statusTOB    = true;
  statusTECF   = true;
  statusTECB   = true;

  bool dcsTIBTID = ((*dcsStatus)[0].ready(DcsStatus::TIBTID));
  bool dcsTOB    = ((*dcsStatus)[0].ready(DcsStatus::TOB));
  bool dcsTECF   = ((*dcsStatus)[0].ready(DcsStatus::TECp));
  bool dcsTECB   = ((*dcsStatus)[0].ready(DcsStatus::TECm));
  if (rawdataAbsent) {
    statusTIBTID = dcsTIBTID;
    statusTOB    = dcsTOB;
    statusTECF   = dcsTECF;
    statusTECB   = dcsTECB;
  } else {
    if ( TIBTIDinDAQ && !dcsTIBTID ) statusTIBTID = false;
    if ( TOBinDAQ    && !dcsTOB )    statusTOB    = false;
    if ( TECFinDAQ   && !dcsTECF )   statusTECF   = false;
    if ( TECBinDAQ   && !dcsTECB )   statusTECB   = false;
  }
  
  LogDebug("SiStripDCSStatus") << " SiStripDCSStatus :: Detectors in DAQ (TIBTID, TOB, TEC+ TEC-)" 
            << TIBTIDinDAQ << " " 
            << TOBinDAQ << " " 
            << TECFinDAQ << " " 
            << TECBinDAQ << std::endl;
  LogDebug("SiStripDCSStatus") << " SiStripDCSStatus :: Detectors in ON (TIBTID, TOB, TEC+ TEC-)"
            << dcsTIBTID << " "
            << dcsTOB << " "
            << dcsTECF << " "
            << dcsTECB << std::endl;
  
  LogDebug("SiStripDCSStatus") << " SiStripDCSStatus :: Final Flags     (TIBTID, TOB, TEC+ TEC-)"
            << statusTIBTID << " " 
            << statusTOB  << " " 
            << statusTECF << " " 
            << statusTECB << std::endl;
  if (statusTIBTID && statusTOB && statusTECF && statusTECB) retVal = true;
  else retVal = false;
  LogDebug("SiStripDCSStatus") << " Return Value " << retVal ;
  return retVal;
}
void SiStripDCSStatus::initialise ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
) [private]

Definition at line 99 of file SiStripDCSStatus.cc.

References FEDRawData::data(), FEDRawDataCollection::FEDData(), edm::EventSetup::get(), edm::Event::getByLabel(), initialised, edm::HandleBase::isValid(), edm::ESHandle< T >::product(), rawdataAbsent, FEDRawData::size(), DetId::subdetId(), sistripsummary::TEC, TECBinDAQ, TECFinDAQ, TrackerTopology::tecSide(), sistripsummary::TIB, TIBTIDinDAQ, sistripsummary::TID, sistripsummary::TOB, TOBinDAQ, and trackerAbsent.

Referenced by getStatus().

                                                                                {
  //Retrieve tracker topology from geometry
  edm::ESHandle<TrackerTopology> tTopoHandle;
  eSetup.get<IdealGeometryRecord>().get(tTopoHandle);
  const TrackerTopology* const tTopo = tTopoHandle.product();

  edm::ESHandle< SiStripFedCabling > fedCabling_;
  eSetup.get<SiStripFedCablingRcd>().get(fedCabling_);
  const std::vector<uint16_t>& connectedFEDs = fedCabling_->feds();

  edm::Handle<FEDRawDataCollection> rawDataHandle;
  e.getByLabel("source", rawDataHandle);

  if ( !rawDataHandle.isValid() ) {
    rawdataAbsent = true;
    return;
  }

  rawdataAbsent = false;
  const FEDRawDataCollection& rawDataCollection = *rawDataHandle;
  for(std::vector<unsigned short>::const_iterator ifed = connectedFEDs.begin(); ifed != connectedFEDs.end(); ifed++){
    const std::vector<FedChannelConnection> fedChannels = fedCabling_->connections( *ifed );
    if (!(rawDataCollection.FEDData(*ifed).size()) || !(rawDataCollection.FEDData(*ifed).data()) ) continue;
    // Check Modules Connected
    for (std::vector<FedChannelConnection>::const_iterator iconn = fedChannels.begin();
         iconn < fedChannels.end(); iconn++){
      if (!iconn->isConnected()) continue;
      uint32_t detId = iconn->detId();
      StripSubdetector subdet(detId);
      if ( (subdet.subdetId() == StripSubdetector::TIB) || (subdet.subdetId() == StripSubdetector::TID)) {
        TIBTIDinDAQ = true;
        break;
      } else if (subdet.subdetId() == StripSubdetector::TOB) {
        TOBinDAQ = true;
        break;
      } else if (subdet.subdetId() == StripSubdetector::TEC) {
        if (tTopo->tecSide(detId) == 2) TECFinDAQ = true;
        else if (tTopo->tecSide(detId) == 1) TECBinDAQ = true;
        break;
      }
    }
    if (TIBTIDinDAQ && TOBinDAQ && TECFinDAQ && TECBinDAQ) break;
  } 
  initialised = true;
  if (!TIBTIDinDAQ && !TOBinDAQ && !TECFinDAQ && !TECBinDAQ) trackerAbsent = true;
}

Member Data Documentation

Definition at line 22 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().

Definition at line 21 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().

Definition at line 19 of file SiStripDCSStatus.h.

Referenced by getStatus().

Definition at line 19 of file SiStripDCSStatus.h.

Referenced by getStatus().

Definition at line 19 of file SiStripDCSStatus.h.

Referenced by getStatus().

Definition at line 19 of file SiStripDCSStatus.h.

Referenced by getStatus().

Definition at line 18 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().

Definition at line 18 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().

Definition at line 18 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().

Definition at line 18 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().

Definition at line 20 of file SiStripDCSStatus.h.

Referenced by getStatus(), and initialise().