51 show_mechanical_structure_view(
true),
52 show_readout_view (
false),
53 show_control_view (
false),
54 select_all_detectors (
true),
55 reset_each_run (
false),
74 for (
auto const&
tag : digiProducerList) {
205 edm::LogInfo(
"SiStripMonitorDigi") <<
"SiStripMonitorDigi::bookHistograms: " 206 <<
" Creating MEs for new Cabling ";
210 edm::LogInfo(
"SiStripMonitorDigi") <<
"SiStripMonitorDigi::bookHistograms: " 211 <<
" Resetting MEs ";
212 for (std::map<uint32_t, ModMEs >::const_iterator idet =
DigiMEs.begin() ; idet!=
DigiMEs.end() ; idet++) {
247 if( es.
find( recordKey ) !=
nullptr) {
253 std::vector<int> FedsInIds= sumFED->
m_fed_in;
254 for(
unsigned int it = 0; it < FedsInIds.size(); ++it) {
255 int fedID = FedsInIds[it];
258 if ( fedID >= 50 && fedID <= 133 ) ++
nFedTIB;
259 if ( fedID >= 134 && fedID <= 148 ) ++
nFedTIDm;
260 if ( fedID >= 149 && fedID <= 163 ) ++
nFedTIDp;
261 if ( fedID >= 164 && fedID <= 259 ) ++
nFedTECm;
262 if ( fedID >= 260 && fedID <= 355 ) ++
nFedTECp;
263 if ( fedID >= 356 && fedID <= 489 ) ++
nFedTOB;
296 int nFeds [6] = { 96 , 96 , 84 , 15 , 15 , 134 };
301 for (
int ibin = 1; ibin<7;ibin++){
309 && (
float)nFedsConnected[ibin-1] / nFeds[ibin-1] > 0.5
337 std::vector<uint32_t> activeDets;
344 for(std::vector<uint32_t>::iterator idets = activeDets.begin(); idets != activeDets.end(); idets++){
345 if(*idets == 0) activeDets.erase(idets);
358 std::vector<uint32_t> tibDetIds;
361 edm::LogInfo(
"SiStripTkDQM|SiStripMonitorDigi")<<
"nr. of activeDets: "<<activeDets.size();
362 for(std::vector<uint32_t>::const_iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
364 uint32_t detid = (*detid_iterator);
383 DigiMEs.insert( std::make_pair(detid, local_modmes));
387 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid, tTopo);
392 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
395 int32_t lnumber = det_layer_pair.second;
396 std::vector<uint32_t> layerDetIds;
397 if (det_layer_pair.first ==
"TIB") {
399 }
else if (det_layer_pair.first ==
"TOB") {
401 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
403 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
405 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
407 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
414 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second);
432 const char*
HistoName =
"Summary Mean Apv shots for SubDets";
448 const char*
HistoName =
"NApv_Shots_vs_Time";
465 const char*
HistoName =
"Number_of_Strips_in_Apv_Shots";
476 const char*
HistoName =
"Number_of_Apv_Shots";
488 const char*
HistoName =
"Apv_Shots_Charge_Median";
500 const char*
HistoName =
"Apv_Shots_Apv_Number";
511 const char*
HistoName =
"NumberOfDigisinFED_v_FEDID";
532 std::stringstream ss;
538 const char*
HistoName =
"NumberOfDigisInLastLS";
594 std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > >::const_iterator iToken =
digiProducerTokenList.begin();
596 iter != iEnd; ++iter, ++iToken) {
603 for (std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.begin();
605 iSubdet->second.totNDigis = 0;
606 iSubdet->second.SubDetApvShots.clear();
609 std::map<int,int> FEDID_v_digisum;
616 std::vector< uint32_t > layer_dets = iterLayer->second;
617 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(layer_label);
623 else local_layermes = iLayerME->second;
625 int largest_adc_layer= 0;
626 int smallest_adc_layer= 99999;
635 for (std::vector< uint32_t >::const_iterator iterDets = layer_dets.begin() ;
636 iterDets != layer_dets.end() ; iterDets++) {
640 uint32_t detid = (*iterDets);
647 std::map<uint32_t, ModMEs >::iterator
pos =
DigiMEs.find(detid);
648 ModMEs local_modmes = pos->second;
666 int good_fcc_index = -999;
667 for(
unsigned int x=0;
x<fedConnections.size();
x++){
668 if(fedConnections[
x]!=
nullptr){
673 if(fedConnections[good_fcc_index]!=
nullptr){
674 int temp_fedid = fedConnections[good_fcc_index]->fedId();
675 if(FEDID_v_digisum.find(temp_fedid) != FEDID_v_digisum.end()){
676 if(ndigi_det <1000 && ndigi_det>0){
677 FEDID_v_digisum[temp_fedid] = FEDID_v_digisum.find(temp_fedid)->second + ndigi_det;
681 if(ndigi_det < 1000 && ndigi_det >0){
682 FEDID_v_digisum[temp_fedid] = ndigi_det;
687 edm::LogInfo(
"SiStripMonitorDigi") <<
"SiStripMonitorDigi::analyze WARNING! no good connections for detid = " << detid << std::endl;
692 const std::vector<APVShot>& shots = theShotFinder.
getShots();
707 if (ndigi_det == 0)
continue;
711 ndigi_layer += ndigi_det;
714 int largest_adc=(digi_detset.
data.begin())->
adc();
715 int smallest_adc=(digi_detset.
data.begin())->
adc();
719 float det_occupancy = 0.0;
722 digiIter!= digi_detset.
data.end(); digiIter++ ){
724 int this_adc = digiIter->adc();
726 if (this_adc > 0.0) det_occupancy++;
728 if(this_adc>largest_adc) largest_adc = this_adc;
729 if(this_adc<smallest_adc) smallest_adc = this_adc;
735 (local_modmes.
DigiADCs)->Fill(static_cast<float>(this_adc));
750 if (nstrips > 0 && det_occupancy > 0 ) {
751 det_occupancy = det_occupancy/nstrips;
760 if (largest_adc > largest_adc_layer) largest_adc_layer = largest_adc;
761 if (smallest_adc < smallest_adc_layer) smallest_adc_layer = smallest_adc;
786 std::map<std::string, SubDetMEs>::iterator iSubdet =
SubDetMEsMap.find(subdet_label);
788 iSubdet->second.totNDigis += ndigi_layer;
806 edm::LogInfo(
"DQMProvInfo") <<
" gtfeEvmWord inaccessible" ;
809 if ( gtfeEvmExtWord.
beamMode() == 11 )
813 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
817 if (strcmp(it->first.c_str(),
"TEC__MINUS")==0){
819 }
else if (strcmp(it->first.c_str(),
"TEC__PLUS")==0){
821 }
else if (strcmp(it->first.c_str(),
"TIB")==0){
823 }
else if (strcmp(it->first.c_str(),
"TID__MINUS")==0){
825 }
else if (strcmp(it->first.c_str(),
"TID__PLUS")==0){
827 }
else if (strcmp(it->first.c_str(),
"TOB")==0){
833 if (strcmp(it->first.c_str(),
"TEC__MINUS")==0){
835 }
else if (strcmp(it->first.c_str(),
"TEC__PLUS")==0){
837 }
else if (strcmp(it->first.c_str(),
"TIB")==0){
839 }
else if (strcmp(it->first.c_str(),
"TID__MINUS")==0){
841 }
else if (strcmp(it->first.c_str(),
"TID__PLUS")==0){
843 }
else if (strcmp(it->first.c_str(),
"TOB")==0){
859 for (uint
i=0;
i< ShotsSize; ++
i){
880 std::map<int,int>::iterator it;
881 for(it=FEDID_v_digisum.begin(); it!=FEDID_v_digisum.end(); it++){
897 && apv_phase_collection.
isValid()
904 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
909 subdetmes = it->second;
912 long long tbx_corr = tbx;
918 tbx_corr -= the_phase;
927 std::map<uint32_t, ModMEs >::iterator
pos =
DigiMEs.find(idet);
928 ModMEs mod_me = pos->second;
955 else me->setAxisTitle(
"Event Time in Seconds",1);
964 return ibooker.
book1D(HistoName,HistoName,
975 me->
Fill(timeinorbit,value);
998 hid = hidmanager.
createHistoId(
"NumberOfDigisPerStrip",
"det",detid);
1007 hid = hidmanager.
createHistoId(
"ADCsHottestStrip",
"det",detid);
1015 hid = hidmanager.
createHistoId(
"ADCsCoolestStrip",
"det",detid);
1031 hid = hidmanager.
createHistoId(
"StripOccupancy",
"det",detid);
1045 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
1130 HistoName =
"TotalNumberOfDigiProfile__" +
label;
1148 HistoName =
"Digi_vs_ApvCycle__" +
label;
1164 HistoName =
"Digi_vs_ApvCycle_2D__" +
label;
1166 double h2ymax = 9999.0;
1167 double yfact = Parameters.
getParameter<
double>(
"yfactor");
1168 if(label.find(
"TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
1169 else if (label.find(
"TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
1170 else if (label.find(
"TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
1171 else if (label.find(
"TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
1186 HistoName =
"Number_of_Apv_Shots_" +
label;
1198 HistoName =
"Number_of_Strips_in_Apv_Shots_" +
label;
1210 HistoName =
"Apv_Shots_Charge_Median_" +
label;
1222 HistoName =
"Apv_Shots_Apv_Number_" +
label;
1237 HistoName =
"NApv_Shots_vs_Time_" +
label;
1276 for (uint
i=0;
i<moduleShots.size();
i++){
1277 subdetShots.push_back(moduleShots[
i]);
1283 for (uint
i=0;
i<shots.size();
i++){
1284 if (mode==1) the_map->
fill(
id,shots[
i].nStrips());
1285 if (mode==2) the_map->
fill(
id,shots[
i].median());
int adc(sample_type sample)
get the ADC sample (12 bits)
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName)
LuminosityBlockID id() const
void ResetModuleMEs(uint32_t idet)
T getParameter(std::string const &) const
bool subdetswitchapvcycleth2on
std::map< std::string, LayerMEs > LayerMEsMap
bool globalswitchNDigisFEDID
bool moduleswitchnumdigison
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
int integrateNLumisections_
void createMEs(DQMStore::IBooker &ibooker, const edm::EventSetup &es)
MonitorElement * LayerNumberOfDigisTrend
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
MonitorElement * bookProfile(Args &&...args)
MonitorElement * SubDetTotDigiProf
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
MonitorElement * LayerStripOccupancy
bool globalswitchapvshotsonprof
bool layerswitchdigiadcson
MonitorElement * LayerADCsHottestStrip
bool layerswitchnumdigisprofon
bool subdetswitchapvshotsApvon
MonitorElement * SubDetDigiFailures2D
const double NORBITS_PER_LS
edm::InputTag historyProducer_
const L1GtfeExtWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
MonitorElement * LayerADCsHottestStripTrend
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
long long absoluteBX(const unsigned int ev1) const
MonitorElement * NApvShotsGlobalProf
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
std::map< uint32_t, ModMEs > DigiMEs
std::map< std::string, std::string > SubDetPhasePartMap
void getLayerFolderName(std::stringstream &ss, uint32_t rawdetid, const TrackerTopology *tTopo, bool ring_flag=false)
MonitorElement * MedianChargeApvShotsGlobal
MonitorElement * StripMultiplicityApvShotsGlobal
TkHistoMap * tkmapNstripApvshot
bool globalsummaryapvshotson
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=false)
bool layerswitchdigiadcprofon
MonitorElement * SubDetDigiApvTH2
MonitorElement * StripOccupancy
bool subdetswitchtotdigiprofon
MonitorElement * SubDetDigiApvProf
MonitorElement * LayerNumberOfDigisProfile
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
bool globalswitchnapvshotson
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
bool subdetswitchchargemedianapvshotson
std::vector< APVShot > SubDetApvShots
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
unsigned long long m_cacheID_
MonitorElement * SubDetNApvShotsNApvTH1
void createSubDetMEs(DQMStore::IBooker &ibooker, std::string label)
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
bool getStatus(edm::Event const &e, edm::EventSetup const &eSetup)
MonitorElement * NumberOfDigisPerStrip
const std::vector< APVShot > & getShots() const
bool subdetswitchapvcycleprofon
MonitorElement * ADCsCoolestStrip
const int getPhase(const std::string partition) const
vector< ParameterSet > Parameters
bool moduleswitchadchotteston
bool globalswitchapvshotsApvon
SiStripDCSStatus * dcsStatus_
const double NORBITS_PER_SECOND
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0) const
MonitorElement * LayerADCsCoolestStripTrend
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * SubDetNStripsApvShotsTH1
bool shotsstripshistomapon
DigiFailureMEs digiFailureMEs
std::vector< int > m_fed_in
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
void fill(uint32_t &detid, float value)
edm::EDGetTokenT< EventWithHistory > historyProducerToken_
MonitorElement * SubDetTotDigiProfLS
void fillME(MonitorElement *ME, float value1)
MonitorElement * LayerDigiADCs
MonitorElement * LayerNumberOfDigis
MonitorElement * NApvApvShotsGlobal
MonitorElement * book1D(Args &&...args)
std::vector< const edm::DetSetVector< SiStripDigi > * > digi_detset_handles
void tag(MonitorElement *, unsigned int)
Abs< T >::type abs(const T &t)
void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
bool layerswitchnumdigison
bool globalswitchnstripsapvshotson
Kind kind(void) const
Get the type of the monitor element.
std::map< std::string, SubDetMEs > SubDetMEsMap
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
MonitorElement * ADCsHottestStrip
bool shotschargehistomapon
void createLayerMEs(DQMStore::IBooker &ibooker, std::string label, int ndet)
void fillTrend(MonitorElement *me, float value, float timeinorbit)
MonitorElement * SubDetNApvShotsProf
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > gtEvmToken_
MonitorElement * NApvShotsGlobal
std::vector< edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > > digiProducerTokenList
MonitorElement * LayerDigiADCProfile
bool moduleswitchstripoccupancyon
bool subdetswitchtotdigifailureon
~SiStripMonitorDigi() override
int getDigiSourceIndex(uint32_t id)
void analyze(const edm::Event &, const edm::EventSetup &) override
SiStripMonitorDigi(const edm::ParameterSet &)
edm::InputTag apvPhaseProducer_
void setCurrentFolder(const std::string &fullpath)
std::map< std::string, std::vector< uint32_t > > LayerDetMap
MonitorElement * NumberOfDigis
T const * product() const
MonitorElement * book2D(Args &&...args)
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
MonitorElement * SubDetChargeMedianApvShotsTH1
bool moduleswitchadccooleston
LuminosityBlockNumber_t luminosityBlock() const
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
bool globalswitchchargemedianapvshotson
std::string topFolderName_
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=false)
bool subdetswitchnstripsapvshotson
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t petal_bkw_frw=0, uint32_t petal=0, uint32_t ring=0, uint32_t ster=0) const
std::vector< edm::InputTag > digiProducerList
const uint16_t nApvPairs(uint32_t det_id) const
TkHistoMap * tkmapMedianChargeApvshots
edm::EDGetTokenT< APVCyclePhaseCollection > apvPhaseProducerToken_
double getBinContent(int binx) const
get content of bin (1-D)
bool layerswitchadchotteston
TkHistoMap * tkmapNApvshots
MonitorElement * LayerStripOccupancyTrend
bool moduleswitchnumdigispstripon
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0) const
MonitorElement * LayerADCsCoolestStrip
int ignoreFirstNLumisections_
bool moduleswitchdigiadcson
bool layerswitchstripoccupancyon
MonitorElement * SubDetNApvShotsTH1
MonitorElement * bookMETrend(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName)
void AddApvShotsToSubDet(const std::vector< APVShot > &, std::vector< APVShot > &)
SiStripFolderOrganizer folder_organizer
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0) const
bool subdetswitchapvshotsonprof
MonitorElement * ShotsVsTimeApvShotsGlobal
MonitorElement * DigiADCs
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
collection_type::const_iterator const_iterator
collection_type::const_iterator const_iterator
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
const cms_uint16_t beamMode() const
T const * product() const
void FillApvShotsMap(TkHistoMap *, const std::vector< APVShot > &, uint32_t id, int)
MonitorElement * LayerDigiADCsTrend
MonitorElement * NumberOfFEDDigis
bool show_mechanical_structure_view
bool layerswitchadccooleston
void createModuleMEs(DQMStore::IBooker &ibooker, ModMEs &mod_single, uint32_t detid)
bool subdetswitchnapvshotson
void endRun(const edm::Run &, const edm::EventSetup &) override