CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy Class Reference

#include <CalibTracker/SiStripQuality/src/SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc>

Classes

struct  Apv
 

Public Types

typedef dqm::legacy::DQMStore DQMStore
 
typedef SiStrip::QualityHistosMap HistoMap
 
typedef dqm::legacy::MonitorElement MonitorElement
 

Public Member Functions

void extractBadAPVSandStrips (SiStripQuality *, HistoMap &, const SiStripQuality *)
 
void setAbsoluteLowThreshold (long double absolute_low)
 
void setAbsoluteOccupancyThreshold (long double absolute_occupancy)
 
void setHighOccupancyThreshold (long double high_occupancy)
 
void setLowOccupancyThreshold (long double low_occupancy)
 
void setMinNumEntries (unsigned short m)
 
void setMinNumEntriesPerStrip (unsigned short m)
 
void setMinNumOfEvents ()
 
void setNumberIterations (int number_iterations)
 
void setNumberOfEvents (double Nevents)
 
void setOutputFileName (std::string OutputFileName, bool WriteOutputFile, std::string DQMOutfileName, bool WriteDQMHistograms)
 
void setProbabilityThreshold (long double prob)
 
void setTrackerGeometry (const TrackerGeometry *tkgeom)
 
 SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy (const edm::ParameterSet &, const TrackerTopology *)
 
virtual ~SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy ()
 

Private Member Functions

void AnalyzeOccupancy (SiStripQuality *, std::vector< Apv > &, std::pair< double, double > *, std::vector< unsigned int > &, const SiStripQuality *)
 
void CalculateMeanAndRMS (const std::vector< Apv > &, std::pair< double, double > *, int)
 
void evaluatePoissonian (std::vector< long double > &, long double &meanVal)
 
void fillStripDQMHistograms ()
 
void initializeDQMHistograms ()
 
void iterativeSearch (Apv &, std::vector< unsigned int > &, int)
 
void setBasicTreeParameters (int detid)
 

Private Attributes

long double absolute_occupancy_
 
long double absolutelow_
 
TH1F * absoluteOccupancy [5][10]
 
int apv_channel
 
int apv_number
 
int apvAbsoluteOccupancy
 
double apvMedianOccupancy
 
TTree * apvtree
 
double avgAPVHits
 
double avgapvhits [6]
 
uint32_t detrawid
 
int disc
 
unsigned int distance
 
unsigned int distanceL
 
unsigned int distanceR
 
std::vector< TH2F * > distanceVsStripNumber
 
std::string DQMOutfileName_
 
DQMStoredqmStore
 
TFile * f
 
float global_position_x
 
float global_position_y
 
float global_position_z
 
long double highoccupancy_
 
int hotStripsPerAPV
 
int hotstripsperapv [6]
 
int hotStripsPerModule
 
int hotstripspermodule
 
int isback
 
int isBad
 
int isexternalstring
 
int isHot
 
int ishot [128]
 
int isstereo
 
int iszminusside
 
int layer_ring
 
std::vector< std::string > layerName
 
long double lowoccupancy_
 
std::pair< double, double > MeanAndRms_TECMinus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc4 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc5 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc6 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc7 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc8 [7]
 
std::pair< double, double > MeanAndRms_TECMinus_Disc9 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc4 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc5 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc6 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc7 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc8 [7]
 
std::pair< double, double > MeanAndRms_TECPlus_Disc9 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer1 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer2 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer3 [7]
 
std::pair< double, double > MeanAndRms_TIB_Layer4 [7]
 
std::pair< double, double > MeanAndRms_TIDMinus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TIDMinus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TIDMinus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TIDPlus_Disc1 [7]
 
std::pair< double, double > MeanAndRms_TIDPlus_Disc2 [7]
 
std::pair< double, double > MeanAndRms_TIDPlus_Disc3 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer1 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer2 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer3 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer4 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer5 [7]
 
std::pair< double, double > MeanAndRms_TOB_Layer6 [7]
 
double medianAPVHits
 
double medianapvhits [6]
 
TH1F * medianOccupancy [5][10]
 
std::vector< ApvmedianValues_TECMinus_Disc1
 
std::vector< ApvmedianValues_TECMinus_Disc2
 
std::vector< ApvmedianValues_TECMinus_Disc3
 
std::vector< ApvmedianValues_TECMinus_Disc4
 
std::vector< ApvmedianValues_TECMinus_Disc5
 
std::vector< ApvmedianValues_TECMinus_Disc6
 
std::vector< ApvmedianValues_TECMinus_Disc7
 
std::vector< ApvmedianValues_TECMinus_Disc8
 
std::vector< ApvmedianValues_TECMinus_Disc9
 
std::vector< ApvmedianValues_TECPlus_Disc1
 
std::vector< ApvmedianValues_TECPlus_Disc2
 
std::vector< ApvmedianValues_TECPlus_Disc3
 
std::vector< ApvmedianValues_TECPlus_Disc4
 
std::vector< ApvmedianValues_TECPlus_Disc5
 
std::vector< ApvmedianValues_TECPlus_Disc6
 
std::vector< ApvmedianValues_TECPlus_Disc7
 
std::vector< ApvmedianValues_TECPlus_Disc8
 
std::vector< ApvmedianValues_TECPlus_Disc9
 
std::vector< ApvmedianValues_TIB_Layer1
 
std::vector< ApvmedianValues_TIB_Layer2
 
std::vector< ApvmedianValues_TIB_Layer3
 
std::vector< ApvmedianValues_TIB_Layer4
 
std::vector< ApvmedianValues_TIDMinus_Disc1
 
std::vector< ApvmedianValues_TIDMinus_Disc2
 
std::vector< ApvmedianValues_TIDMinus_Disc3
 
std::vector< ApvmedianValues_TIDPlus_Disc1
 
std::vector< ApvmedianValues_TIDPlus_Disc2
 
std::vector< ApvmedianValues_TIDPlus_Disc3
 
std::vector< ApvmedianValues_TOB_Layer1
 
std::vector< ApvmedianValues_TOB_Layer2
 
std::vector< ApvmedianValues_TOB_Layer3
 
std::vector< ApvmedianValues_TOB_Layer4
 
std::vector< ApvmedianValues_TOB_Layer5
 
std::vector< ApvmedianValues_TOB_Layer6
 
TH2F * medianVsAbsoluteOccupancy [5][10]
 
double minNevents_
 
unsigned short MinNumEntries_
 
unsigned short MinNumEntriesPerStrip_
 
int module_number
 
double Nevents_
 
std::vector< TH2F * > nHitsGoodStripsVsStripNumber
 
std::vector< TH2F * > nHitsHotStripsVsStripNumber
 
std::vector< TH2F * > nHitsVsStripNumber
 
std::vector< unsigned int > nLayers
 
int number_apvs
 
int number_strips
 
int numberiterations_
 
std::vector< TH2F * > occupancyGoodStripsVsStripNumber
 
std::vector< TH2F * > occupancyHotStripsVsStripNumber
 
std::vector< TH2F * > occupancyVsStripNumber
 
std::ostringstream oss
 
std::string outfilename
 
std::string OutFileName_
 
std::vector< TProfile * > pfxDistanceVsStripNumber
 
std::vector< TProfile * > pfxNHitsGoodStripsVsStripNumber
 
std::vector< TProfile * > pfxNHitsHotStripsVsStripNumber
 
std::vector< TProfile * > pfxNHitsVsStripNumber
 
std::vector< TProfile * > pfxOccupancyGoodStripsVsStripNumber
 
std::vector< TProfile * > pfxOccupancyHotStripsVsStripNumber
 
std::vector< TProfile * > pfxOccupancyVsStripNumber
 
std::vector< TProfile * > pfxPoissonProbGoodStripsVsStripNumber
 
std::vector< TProfile * > pfxPoissonProbHotStripsVsStripNumber
 
std::vector< TProfile * > pfxPoissonProbVsStripNumber
 
double poissonProb
 
double poissonprob [128]
 
std::vector< TH2F * > poissonProbGoodStripsVsStripNumber
 
std::vector< TH2F * > poissonProbHotStripsVsStripNumber
 
std::vector< TH2F * > poissonProbVsStripNumber
 
SiStripQualitypQuality
 
long double prob_
 
std::vector< TH1F * > projXDistanceVsStripNumber
 
std::vector< TH1F * > projXNHitsGoodStripsVsStripNumber
 
std::vector< TH1F * > projXNHitsHotStripsVsStripNumber
 
std::vector< TH1F * > projXNHitsVsStripNumber
 
std::vector< TH1F * > projYDistanceVsStripNumber
 
std::vector< TH1F * > projYNHitsGoodStripsVsStripNumber
 
std::vector< TH1F * > projYNHitsHotStripsVsStripNumber
 
std::vector< TH1F * > projYNHitsVsStripNumber
 
std::vector< TH1F * > projYOccupancyGoodStripsVsStripNumber
 
std::vector< TH1F * > projYOccupancyHotStripsVsStripNumber
 
std::vector< TH1F * > projYOccupancyVsStripNumber
 
std::vector< TH1F * > projYPoissonProbGoodStripsVsStripNumber
 
std::vector< TH1F * > projYPoissonProbHotStripsVsStripNumber
 
std::vector< TH1F * > projYPoissonProbVsStripNumber
 
long double ratio_
 
int rodstringpetal
 
double singleStripOccupancy
 
std::stringstream ss
 
float strip_global_position_x
 
float strip_global_position_y
 
float strip_global_position_z
 
int strip_number
 
int stripHits
 
int striphits [128]
 
double stripOccupancy [6][128]
 
double stripoccupancy [128]
 
TTree * striptree
 
double stripWeight [6][128]
 
int subdetid
 
std::vector< std::string > subDetName
 
const TrackerGeometryTkGeom
 
MonitorElementtmp
 
TProfile * tmp_prof
 
const TrackerTopologytTopo
 
bool UseInputDB_
 
std::vector< unsigned int > vHotStripsInModule
 
bool WriteDQMHistograms_
 
bool WriteOutputFile_
 

Detailed Description

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

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

Definition at line 42 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.h.

Member Typedef Documentation

◆ DQMStore

◆ HistoMap

◆ MonitorElement

Constructor & Destructor Documentation

◆ SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy()

SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy ( const edm::ParameterSet iConfig,
const TrackerTopology theTopo 
)

Definition at line 12 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References absolute_occupancy_, minNevents_, and Nevents_.

14  : ratio_(1.5),
15  lowoccupancy_(0),
16  highoccupancy_(100),
17  absolutelow_(0),
19  Nevents_(0),
21  OutFileName_("Occupancy.root"),
22  DQMOutfileName_("DQMOutput"),
23  UseInputDB_(iConfig.getUntrackedParameter<bool>("UseInputDB", false)),
24  tTopo(theTopo) {
26 }
T getUntrackedParameter(std::string const &, T const &) const

◆ ~SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy()

SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::~SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy ( )
virtual

Definition at line 28 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References LogTrace.

28  {
29  LogTrace("SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy")
30  << "[SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::~"
31  "SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy] "
32  << std::endl;
33 }
#define LogTrace(id)

Member Function Documentation

◆ AnalyzeOccupancy()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::AnalyzeOccupancy ( SiStripQuality quality,
std::vector< Apv > &  medianValues,
std::pair< double, double > *  MeanAndRms,
std::vector< unsigned int > &  BadStripList,
const SiStripQuality InSiStripQuality 
)
private

Definition at line 474 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References absolutelow_, absoluteOccupancy, apv_channel, apv_number, apvAbsoluteOccupancy, apvMedianOccupancy, apvtree, gather_cfg::cout, disc, distance, distanceL, distanceR, distanceVsStripNumber, SiStripBadStrip::encode(), fillStripDQMHistograms(), dqmdumpme::first, global_position_x, global_position_y, global_position_z, highoccupancy_, hotStripsPerAPV, hotstripsperapv, hotStripsPerModule, hotstripspermodule, mps_fire::i, TrackerGeometry::idToDet(), SiStripQuality::IsApvBad(), isBad, isHot, ishot, iterativeSearch(), pixelTopology::layer, layer_ring, StripTopology::localPosition(), lowoccupancy_, medianOccupancy, medianVsAbsoluteOccupancy, minNevents_, number_strips, poissonProb, poissonprob, pQuality, quality, FastTimerService_cff::range, edm::second(), setBasicTreeParameters(), singleStripOccupancy, StripGeomDetUnit::specificTopology(), digitizers_cfi::strip, strip_global_position_x, strip_global_position_y, strip_global_position_z, strip_number, stripHits, striphits, stripoccupancy, striptree, subdetid, TkGeom, UseInputDB_, vHotStripsInModule, WriteOutputFile_, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by extractBadAPVSandStrips().

478  {
479  int Moduleposition;
480  uint32_t Detid;
481 
482  for (uint32_t it = 0; it < medianValues.size(); it++) {
483  Moduleposition = (medianValues[it].modulePosition) - 1;
484  Detid = medianValues[it].detrawId;
485 
486  setBasicTreeParameters(Detid);
487 
488  DetId DetectorId = DetId(Detid);
489  const StripGeomDetUnit* TheStripDet = dynamic_cast<const StripGeomDetUnit*>((TkGeom->idToDet(DetectorId)));
490  const StripTopology* TheStripTopol = dynamic_cast<const StripTopology*>(&(TheStripDet->specificTopology()));
491 
492  //Analyze the occupancies
493  hotstripspermodule = 0;
494  vHotStripsInModule.clear();
495 
496  for (int apv = 0; apv < medianValues[it].numberApvs; apv++) {
497  double logMedianOccupancy = -1;
498  double logAbsoluteOccupancy = -1;
499 
500  for (int i = 0; i < 128; i++) {
501  ishot[i] = 0;
502  stripoccupancy[i] = 0;
503  striphits[i] = 0;
504  poissonprob[i] = 0;
505  }
506 
507  number_strips = (medianValues[it].numberApvs) * 128;
508  apv_number = apv + 1;
509  apvMedianOccupancy = medianValues[it].apvMedian[apv];
510  apvAbsoluteOccupancy = medianValues[it].apvabsoluteOccupancy[apv];
511  isBad = 0;
512  hotstripsperapv[apv] = 0;
513 
514  LocalPoint pos_apv_local = TheStripTopol->localPosition((apv * 128));
515  GlobalPoint pos_apv_global = (TkGeom->idToDet(DetectorId))->surface().toGlobal(pos_apv_local);
516 
517  global_position_x = pos_apv_global.x();
518  global_position_y = pos_apv_global.y();
519  global_position_z = pos_apv_global.z();
520 
521  if (apvMedianOccupancy > 0)
522  logMedianOccupancy = log10(apvMedianOccupancy);
523  if (apvAbsoluteOccupancy > 0)
524  logAbsoluteOccupancy = log10(apvAbsoluteOccupancy);
525 
526  //Fill the DQM histograms
527  unsigned int layer = 0;
528  if (subdetid == 3 || subdetid == 5)
529  layer = layer_ring;
530  else
531  layer = disc;
532 
533  // Fill histograms for all the tracker
534  medianVsAbsoluteOccupancy[0][0]->Fill(logAbsoluteOccupancy, logMedianOccupancy);
535  medianOccupancy[0][0]->Fill(logMedianOccupancy);
536  absoluteOccupancy[0][0]->Fill(logAbsoluteOccupancy);
537  // Fill summary histograms for each subdetector
538  medianVsAbsoluteOccupancy[subdetid - 2][0]->Fill(logAbsoluteOccupancy, logMedianOccupancy);
539  medianOccupancy[subdetid - 2][0]->Fill(logMedianOccupancy);
540  absoluteOccupancy[subdetid - 2][0]->Fill(logAbsoluteOccupancy);
541  // Fill histograms for each layer/disk
542  medianVsAbsoluteOccupancy[subdetid - 2][layer]->Fill(logAbsoluteOccupancy, logMedianOccupancy);
543  medianOccupancy[subdetid - 2][layer]->Fill(logMedianOccupancy);
544  absoluteOccupancy[subdetid - 2][layer]->Fill(logAbsoluteOccupancy);
545 
546  if (UseInputDB_) {
547  if (InSiStripQuality->IsApvBad(Detid, apv)) {
548  if (WriteOutputFile_ == true) {
549  apvtree->Fill();
550  for (int strip = 0; strip < 128; strip++) {
551  strip_number = (apv * 128) + strip + 1;
552  apv_channel = apv + 1;
553  isHot = ishot[strip];
557 
560 
561  LocalPoint pos_strip_local = TheStripTopol->localPosition(strip);
562  GlobalPoint pos_strip_global = (TkGeom->idToDet(DetectorId))->surface().toGlobal(pos_strip_local);
563 
564  strip_global_position_x = pos_strip_global.x();
565  strip_global_position_y = pos_strip_global.y();
566  strip_global_position_z = pos_strip_global.z();
567  striptree->Fill();
568 
569  // Fill the strip DQM Plots
571  }
572 
573  if (vHotStripsInModule.size() == 1) {
574  distance = 999;
577  } else if (vHotStripsInModule.size() > 1) {
578  for (unsigned int iVec = 0; iVec != vHotStripsInModule.size(); iVec++) {
579  if (iVec == 0)
581  else if (iVec == vHotStripsInModule.size() - 1) {
584  } else if (vHotStripsInModule.size() > 2) {
585  distanceR = vHotStripsInModule[iVec + 1] - vHotStripsInModule[iVec];
586  distanceL = vHotStripsInModule[iVec] - vHotStripsInModule[iVec - 1];
588  } else {
589  std::cout << "ERROR! distance is never computed!!!\n";
590  }
593  }
594  }
595  }
596  continue; //if the apv is already flagged as bad, continue.
597  }
598  }
599 
600  if (medianValues[it].apvMedian[apv] > minNevents_) {
601  if ((medianValues[it].apvMedian[apv] >
602  (MeanAndRms[Moduleposition].first + highoccupancy_ * MeanAndRms[Moduleposition].second)) &&
603  (medianValues[it].apvMedian[apv] > absolutelow_)) {
604  BadStripList.push_back(pQuality->encode((apv * 128), 128, 0));
605  isBad = 1;
606  }
607  } else if (medianValues[it].apvMedian[apv] <
608  (MeanAndRms[Moduleposition].first - lowoccupancy_ * MeanAndRms[Moduleposition].second) &&
609  (MeanAndRms[Moduleposition].first > 2 || medianValues[it].apvabsoluteOccupancy[apv] == 0)) {
610  BadStripList.push_back(pQuality->encode((apv * 128), 128, 0));
611  isBad = 1;
612  }
613 
614  if (isBad != 1) {
615  iterativeSearch(medianValues[it], BadStripList, apv);
616  }
617 
618  if (WriteOutputFile_ == true) {
619  apvtree->Fill();
620  for (int strip = 0; strip < 128; strip++) {
621  strip_number = (apv * 128) + strip + 1;
622  apv_channel = apv + 1;
623  isHot = ishot[strip];
627 
630 
631  LocalPoint pos_strip_local = TheStripTopol->localPosition(strip);
632  GlobalPoint pos_strip_global = (TkGeom->idToDet(DetectorId))->surface().toGlobal(pos_strip_local);
633 
634  strip_global_position_x = pos_strip_global.x();
635  strip_global_position_y = pos_strip_global.y();
636  strip_global_position_z = pos_strip_global.z();
637  striptree->Fill();
638 
639  // Fill the strip DQM Plots
641  }
642  if (vHotStripsInModule.size() == 1) {
643  distance = 999;
646  } else if (vHotStripsInModule.size() > 1) {
647  for (unsigned int iVec = 0; iVec != vHotStripsInModule.size(); iVec++) {
648  if (iVec == 0)
650  else if (iVec == vHotStripsInModule.size() - 1) {
651  distance =
653  } else if (vHotStripsInModule.size() > 2) {
654  distanceR = vHotStripsInModule[iVec + 1] - vHotStripsInModule[iVec];
655  distanceL = vHotStripsInModule[iVec] - vHotStripsInModule[iVec - 1];
657  } else {
658  std::cout << "ERROR! distance is never computed!!!\n";
659  }
662  }
663  }
664  }
665  }
666 
667  if (BadStripList.begin() != BadStripList.end()) {
668  quality->compact(Detid, BadStripList);
669  SiStripQuality::Range range(BadStripList.begin(), BadStripList.end());
670  quality->put(Detid, range);
671  }
672  BadStripList.clear();
673  }
674 }
bool IsApvBad(uint32_t detid, short apvNb) const
T z() const
Definition: PV3DBase.h:61
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
U second(std::pair< T, U > const &p)
string quality
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
const TrackerGeomDet * idToDet(DetId) const override
Definition: DetId.h:17
std::pair< ContainerIterator, ContainerIterator > Range
virtual LocalPoint localPosition(float strip) const =0
unsigned int encode(const unsigned short &first, const unsigned short &NconsecutiveBadStrips, const unsigned short &flag=0)

◆ CalculateMeanAndRMS()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::CalculateMeanAndRMS ( const std::vector< Apv > &  a,
std::pair< double, double > *  MeanRMS,
int  number_iterations 
)
private

Definition at line 427 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References a, mps_fire::i, dqmiolumiharvest::j, Mean, dqmiodumpmetadata::n, and compareTotals::tot.

Referenced by extractBadAPVSandStrips().

429  {
430  Double_t tot[7], tot2[7];
431  Double_t n[7];
432 
433  Double_t Mean[7] = {0};
434  Double_t Rms[7] = {1000, 1000, 1000, 1000, 1000, 1000, 1000};
435 
436  int Moduleposition;
437 
438  for (int i = 0; i < number_iterations; i++) {
439  for (int j = 0; j < 7; j++) {
440  n[j] = 0;
441  tot[j] = 0;
442  tot2[j] = 0;
443  }
444 
445  for (uint32_t it = 0; it < a.size(); it++) {
446  Moduleposition = (a[it].modulePosition) - 1;
447 
448  for (int apv = 0; apv < a[it].numberApvs; apv++) {
449  if (i > 0) {
450  if (a[it].apvMedian[apv] < (Mean[Moduleposition] - 3 * Rms[Moduleposition]) ||
451  (a[it].apvMedian[apv] > (Mean[Moduleposition] + 5 * Rms[Moduleposition]))) {
452  continue;
453  }
454  }
455  tot[Moduleposition] += a[it].apvMedian[apv];
456  tot2[Moduleposition] += (a[it].apvMedian[apv]) * (a[it].apvMedian[apv]);
457  n[Moduleposition]++;
458  }
459  }
460 
461  for (int j = 0; j < 7; j++) {
462  if (n[j] != 0) {
463  Mean[j] = tot[j] / n[j];
464  Rms[j] = TMath::Sqrt(TMath::Abs(tot2[j] / n[j] - Mean[j] * Mean[j]));
465  }
466  }
467  }
468 
469  for (int j = 0; j < 7; j++) {
470  MeanRMS[j] = std::make_pair(Mean[j], Rms[j]);
471  }
472 }
double a
Definition: hdecay.h:119

◆ evaluatePoissonian()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::evaluatePoissonian ( std::vector< long double > &  vPoissonProbs,
long double &  meanVal 
)
private

Definition at line 743 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References mps_fire::i.

Referenced by iterativeSearch().

744  {
745  for (size_t i = 0; i < vPoissonProbs.size(); ++i) {
746  vPoissonProbs[i] = (i == 0) ? TMath::Poisson(i, meanVal) : vPoissonProbs[i - 1] + TMath::Poisson(i, meanVal);
747  }
748 }

◆ extractBadAPVSandStrips()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::extractBadAPVSandStrips ( SiStripQuality siStripQuality,
HistoMap DM,
const SiStripQuality inSiStripQuality 
)

Definition at line 35 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References AnalyzeOccupancy(), sistrip::APV, apv_channel, apv_number, apvAbsoluteOccupancy, apvMedianOccupancy, apvtree, avgAPVHits, CalculateMeanAndRMS(), dqm::implementation::DQMStore::cd(), SiStripQuality::clear(), gather_cfg::cout, detrawid, disc, distanceVsStripNumber, DQMOutfileName_, dqmStore, f, SiStripQuality::fillBadComponents(), global_position_x, global_position_y, global_position_z, hotStripsPerAPV, hotStripsPerModule, mps_fire::i, initializeDQMHistograms(), createfilelist::int, isback, isBad, edm::isDebugEnabled(), isexternalstring, isHot, isstereo, iszminusside, layer_ring, LogTrace, MeanAndRms_TECMinus_Disc1, MeanAndRms_TECMinus_Disc2, MeanAndRms_TECMinus_Disc3, MeanAndRms_TECMinus_Disc4, MeanAndRms_TECMinus_Disc5, MeanAndRms_TECMinus_Disc6, MeanAndRms_TECMinus_Disc7, MeanAndRms_TECMinus_Disc8, MeanAndRms_TECMinus_Disc9, MeanAndRms_TECPlus_Disc1, MeanAndRms_TECPlus_Disc2, MeanAndRms_TECPlus_Disc3, MeanAndRms_TECPlus_Disc4, MeanAndRms_TECPlus_Disc5, MeanAndRms_TECPlus_Disc6, MeanAndRms_TECPlus_Disc7, MeanAndRms_TECPlus_Disc8, MeanAndRms_TECPlus_Disc9, MeanAndRms_TIB_Layer1, MeanAndRms_TIB_Layer2, MeanAndRms_TIB_Layer3, MeanAndRms_TIB_Layer4, MeanAndRms_TIDMinus_Disc1, MeanAndRms_TIDMinus_Disc2, MeanAndRms_TIDMinus_Disc3, MeanAndRms_TIDPlus_Disc1, MeanAndRms_TIDPlus_Disc2, MeanAndRms_TIDPlus_Disc3, MeanAndRms_TOB_Layer1, MeanAndRms_TOB_Layer2, MeanAndRms_TOB_Layer3, MeanAndRms_TOB_Layer4, MeanAndRms_TOB_Layer5, MeanAndRms_TOB_Layer6, medianAPVHits, medianValues_TECMinus_Disc1, medianValues_TECMinus_Disc2, medianValues_TECMinus_Disc3, medianValues_TECMinus_Disc4, medianValues_TECMinus_Disc5, medianValues_TECMinus_Disc6, medianValues_TECMinus_Disc7, medianValues_TECMinus_Disc8, medianValues_TECMinus_Disc9, medianValues_TECPlus_Disc1, medianValues_TECPlus_Disc2, medianValues_TECPlus_Disc3, medianValues_TECPlus_Disc4, medianValues_TECPlus_Disc5, medianValues_TECPlus_Disc6, medianValues_TECPlus_Disc7, medianValues_TECPlus_Disc8, medianValues_TECPlus_Disc9, medianValues_TIB_Layer1, medianValues_TIB_Layer2, medianValues_TIB_Layer3, medianValues_TIB_Layer4, medianValues_TIDMinus_Disc1, medianValues_TIDMinus_Disc2, medianValues_TIDMinus_Disc3, medianValues_TIDPlus_Disc1, medianValues_TIDPlus_Disc2, medianValues_TIDPlus_Disc3, medianValues_TOB_Layer1, medianValues_TOB_Layer2, medianValues_TOB_Layer3, medianValues_TOB_Layer4, medianValues_TOB_Layer5, medianValues_TOB_Layer6, module_number, nHitsGoodStripsVsStripNumber, nHitsHotStripsVsStripNumber, nHitsVsStripNumber, number_apvs, number_strips, numberiterations_, occupancyGoodStripsVsStripNumber, occupancyHotStripsVsStripNumber, occupancyVsStripNumber, OutFileName_, pfxDistanceVsStripNumber, pfxOccupancyGoodStripsVsStripNumber, pfxOccupancyHotStripsVsStripNumber, pfxOccupancyVsStripNumber, pfxPoissonProbGoodStripsVsStripNumber, pfxPoissonProbHotStripsVsStripNumber, pfxPoissonProbVsStripNumber, poissonProb, poissonProbGoodStripsVsStripNumber, poissonProbHotStripsVsStripNumber, poissonProbVsStripNumber, pQuality, projXDistanceVsStripNumber, projYDistanceVsStripNumber, projYNHitsGoodStripsVsStripNumber, projYNHitsHotStripsVsStripNumber, projYNHitsVsStripNumber, projYOccupancyGoodStripsVsStripNumber, projYOccupancyHotStripsVsStripNumber, projYOccupancyVsStripNumber, projYPoissonProbGoodStripsVsStripNumber, projYPoissonProbHotStripsVsStripNumber, projYPoissonProbVsStripNumber, rodstringpetal, dqm::implementation::DQMStore::save(), singleStripOccupancy, ss, digitizers_cfi::strip, strip_global_position_x, strip_global_position_y, strip_global_position_z, strip_number, stripHits, stripOccupancy, striptree, stripWeight, DetId::subdetId(), subdetid, subDetName, StripSubdetector::TEC, TrackerTopology::tecIsZMinusSide(), TrackerTopology::tecRing(), TrackerTopology::tecWheel(), StripSubdetector::TIB, TrackerTopology::tibLayer(), TrackerTopology::tibModule(), StripSubdetector::TID, TrackerTopology::tidIsZMinusSide(), TrackerTopology::tidRing(), TrackerTopology::tidWheel(), StripSubdetector::TOB, TrackerTopology::tobLayer(), TrackerTopology::tobModule(), tTopo, WriteDQMHistograms_, and WriteOutputFile_.

Referenced by SiStripQualityHotStripIdentifierRoot::getNewObject().

36  {
37  LogTrace("SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy")
38  << "[SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::extractBadAPVs] " << std::endl;
39 
40  if (WriteOutputFile_ == true) {
41  f = new TFile(OutFileName_.c_str(), "RECREATE");
42  f->cd();
43 
44  apvtree = new TTree("moduleOccupancy", "tree");
45 
46  apvtree->Branch("DetRawId", &detrawid, "DetRawId/I");
47  apvtree->Branch("SubDetId", &subdetid, "SubDetId/I");
48  apvtree->Branch("Layer_Ring", &layer_ring, "Layer_Ring/I");
49  apvtree->Branch("Disc", &disc, "Disc/I");
50  apvtree->Branch("IsBack", &isback, "IsBack/I");
51  apvtree->Branch("IsExternalString", &isexternalstring, "IsExternalString/I");
52  apvtree->Branch("IsZMinusSide", &iszminusside, "IsZMinusSide/I");
53  apvtree->Branch("RodStringPetal", &rodstringpetal, "RodStringPetal/I");
54  apvtree->Branch("IsStereo", &isstereo, "IsStereo/I");
55  apvtree->Branch("ModuleNumber", &module_number, "ModuleNumber/I");
56  apvtree->Branch("NumberOfStrips", &number_strips, "NumberOfStrips/I");
57  apvtree->Branch("APVGlobalPositionX", &global_position_x, "APVGlobalPositionX/F");
58  apvtree->Branch("APVGlobalPositionY", &global_position_y, "APVGlobalPositionY/F");
59  apvtree->Branch("APVGlobalPositionZ", &global_position_z, "APVGlobalPositionZ/F");
60  apvtree->Branch("APVNumber", &apv_number, "APVNumber/I");
61  apvtree->Branch("APVAbsoluteOccupancy", &apvAbsoluteOccupancy, "apvAbsoluteOccupancy/I");
62  apvtree->Branch("APVMedianOccupancy", &apvMedianOccupancy, "apvMedianOccupancy/D");
63  apvtree->Branch("IsBad", &isBad, "IsBad/I");
64 
65  striptree = new TTree("stripOccupancy", "tree");
66 
67  striptree->Branch("DetRawId", &detrawid, "DetRawId/I");
68  striptree->Branch("SubDetId", &subdetid, "SubDetId/I");
69  striptree->Branch("Layer_Ring", &layer_ring, "Layer_Ring/I");
70  striptree->Branch("Disc", &disc, "Disc/I");
71  striptree->Branch("IsBack", &isback, "IsBack/I");
72  striptree->Branch("IsExternalString", &isexternalstring, "IsExternalString/I");
73  striptree->Branch("IsZMinusSide", &iszminusside, "IsZMinusSide/I");
74  striptree->Branch("RodStringPetal", &rodstringpetal, "RodStringPetal/I");
75  striptree->Branch("IsStereo", &isstereo, "IsStereo/I");
76  striptree->Branch("ModulePosition", &module_number, "ModulePosition/I");
77  striptree->Branch("NumberOfStrips", &number_strips, "NumberOfStrips/I");
78  striptree->Branch("StripNumber", &strip_number, "StripNumber/I");
79  striptree->Branch("APVChannel", &apv_channel, "APVChannel/I");
80  striptree->Branch("StripGlobalPositionX", &strip_global_position_x, "StripGlobalPositionX/F");
81  striptree->Branch("StripGlobalPositionY", &strip_global_position_y, "StripGlobalPositionY/F");
82  striptree->Branch("StripGlobalPositionZ", &strip_global_position_z, "StripGlobalPositionZ/F");
83  striptree->Branch("IsHot", &isHot, "IsHot/I");
84  striptree->Branch("HotStripsPerAPV", &hotStripsPerAPV, "HotStripsPerAPV/I");
85  striptree->Branch("HotStripsPerModule", &hotStripsPerModule, "HotStripsPerModule/I");
86  striptree->Branch("StripOccupancy", &singleStripOccupancy, "StripOccupancy/D");
87  striptree->Branch("StripHits", &stripHits, "StripHits/I");
88  striptree->Branch("PoissonProb", &poissonProb, "PoissonProb/D");
89  striptree->Branch("MedianAPVHits", &medianAPVHits, "MedianAPVHits/D");
90  striptree->Branch("AvgAPVHits", &avgAPVHits, "AvgAPVHits/D");
91  }
92 
93  HistoMap::iterator it = DM.begin();
94  HistoMap::iterator itEnd = DM.end();
95  std::vector<unsigned int> badStripList;
96  uint32_t detid;
97  for (; it != itEnd; ++it) {
98  Apv APV;
99 
100  for (int apv = 0; apv < 6; apv++) {
101  APV.apvMedian[apv] = 0;
102  APV.apvabsoluteOccupancy[apv] = 0;
103  APV.NEntries[apv] = 0;
104  APV.NEmptyBins[apv] = 0;
105 
106  for (int strip = 0; strip < 128; strip++) {
107  stripOccupancy[apv][strip] = 0;
108  stripWeight[apv][strip] = 0;
109  }
110  }
111 
112  number_strips = (int)((it->second.get())->GetNbinsX());
113  number_apvs = number_strips / 128;
114  APV.numberApvs = number_apvs;
115 
116  for (int apv = 0; apv < number_apvs; apv++) {
117  APV.th1f[apv] = new TH1F("tmp", "tmp", 128, 0.5, 128.5);
118  int NumberEntriesPerAPV = 0;
119 
120  for (int strip = 0; strip < 128; strip++) {
121  stripOccupancy[apv][strip] =
122  (it->second.get())->GetBinContent((apv * 128) + strip + 1); // Remember: Bin=0 is underflow bin!
123  stripWeight[apv][strip] = 1;
124  APV.apvabsoluteOccupancy[apv] +=
125  (it->second.get())->GetBinContent((apv * 128) + strip + 1); // Remember: Bin=0 is underflow bin!
126  APV.th1f[apv]->SetBinContent(strip + 1, (it->second.get())->GetBinContent((apv * 128) + strip + 1));
127  NumberEntriesPerAPV += (int)(it->second.get())->GetBinContent((apv * 128) + strip + 1);
128  }
129 
130  APV.th1f[apv]->SetEntries(NumberEntriesPerAPV);
131  APV.NEntries[apv] = (int)APV.th1f[apv]->GetEntries();
132  }
133 
134  for (int apv = 0; apv < number_apvs; apv++) {
135  APV.apvMedian[apv] = TMath::Median(128, stripOccupancy[apv], stripWeight[apv]);
136  }
137 
138  detid = it->first;
139  DetId detectorId = DetId(detid);
140 
141  if (edm::isDebugEnabled())
142  LogTrace("SiStripBadAPV") << "Analyzing detid " << detid << std::endl;
143 
144  detrawid = detid;
145  APV.detrawId = detrawid;
146  subdetid = detectorId.subdetId();
147 
148  switch (detectorId.subdetId()) {
152  APV.modulePosition = module_number;
153 
154  if (layer_ring == 1)
155  medianValues_TIB_Layer1.push_back(APV);
156  else if (layer_ring == 2)
157  medianValues_TIB_Layer2.push_back(APV);
158  else if (layer_ring == 3)
159  medianValues_TIB_Layer3.push_back(APV);
160  else if (layer_ring == 4)
161  medianValues_TIB_Layer4.push_back(APV);
162  break;
163 
167  APV.modulePosition = layer_ring;
168 
170  iszminusside = 1;
171  else
172  iszminusside = 0;
173 
174  if (iszminusside == 0) {
175  if (disc == 1)
176  medianValues_TIDPlus_Disc1.push_back(APV);
177  else if (disc == 2)
178  medianValues_TIDPlus_Disc2.push_back(APV);
179  else if (disc == 3)
180  medianValues_TIDPlus_Disc3.push_back(APV);
181  } else if (iszminusside == 1) {
182  if (disc == 1)
183  medianValues_TIDMinus_Disc1.push_back(APV);
184  else if (disc == 2)
185  medianValues_TIDMinus_Disc2.push_back(APV);
186  else if (disc == 3)
187  medianValues_TIDMinus_Disc3.push_back(APV);
188  }
189  break;
190 
194  APV.modulePosition = module_number;
195 
196  if (layer_ring == 1)
197  medianValues_TOB_Layer1.push_back(APV);
198  else if (layer_ring == 2)
199  medianValues_TOB_Layer2.push_back(APV);
200  else if (layer_ring == 3)
201  medianValues_TOB_Layer3.push_back(APV);
202  else if (layer_ring == 4)
203  medianValues_TOB_Layer4.push_back(APV);
204  else if (layer_ring == 5)
205  medianValues_TOB_Layer5.push_back(APV);
206  else if (layer_ring == 6)
207  medianValues_TOB_Layer6.push_back(APV);
208  break;
209 
213  APV.modulePosition = layer_ring;
214 
216  iszminusside = 1;
217  else
218  iszminusside = 0;
219 
220  if (iszminusside == 0) {
221  if (disc == 1)
222  medianValues_TECPlus_Disc1.push_back(APV);
223  else if (disc == 2)
224  medianValues_TECPlus_Disc2.push_back(APV);
225  else if (disc == 3)
226  medianValues_TECPlus_Disc3.push_back(APV);
227  else if (disc == 4)
228  medianValues_TECPlus_Disc4.push_back(APV);
229  else if (disc == 5)
230  medianValues_TECPlus_Disc5.push_back(APV);
231  else if (disc == 6)
232  medianValues_TECPlus_Disc6.push_back(APV);
233  else if (disc == 7)
234  medianValues_TECPlus_Disc7.push_back(APV);
235  else if (disc == 8)
236  medianValues_TECPlus_Disc8.push_back(APV);
237  else if (disc == 9)
238  medianValues_TECPlus_Disc9.push_back(APV);
239  } else if (iszminusside == 1) {
240  if (disc == 1)
241  medianValues_TECMinus_Disc1.push_back(APV);
242  else if (disc == 2)
243  medianValues_TECMinus_Disc2.push_back(APV);
244  else if (disc == 3)
245  medianValues_TECMinus_Disc3.push_back(APV);
246  else if (disc == 4)
247  medianValues_TECMinus_Disc4.push_back(APV);
248  else if (disc == 5)
249  medianValues_TECMinus_Disc5.push_back(APV);
250  else if (disc == 6)
251  medianValues_TECMinus_Disc6.push_back(APV);
252  else if (disc == 7)
253  medianValues_TECMinus_Disc7.push_back(APV);
254  else if (disc == 8)
255  medianValues_TECMinus_Disc8.push_back(APV);
256  else if (disc == 9)
257  medianValues_TECMinus_Disc9.push_back(APV);
258  }
259  break;
260 
261  default:
262  std::cout << "### Detector does not belong to TIB, TID, TOB or TEC !? ###" << std::endl;
263  std::cout << "### DetRawId: " << detrawid << " ###" << std::endl;
264  }
265 
266  } // end loop on modules
267 
268  // Calculate Mean and RMS for each Layer
273 
280 
287 
297 
307 
308  pQuality = siStripQuality;
309  badStripList.clear();
310 
311  // Initialize the DQM output histograms
313 
314  // Analyze the Occupancy for both APVs and Strips
315  AnalyzeOccupancy(siStripQuality, medianValues_TIB_Layer1, MeanAndRms_TIB_Layer1, badStripList, inSiStripQuality);
316  AnalyzeOccupancy(siStripQuality, medianValues_TIB_Layer2, MeanAndRms_TIB_Layer2, badStripList, inSiStripQuality);
317  AnalyzeOccupancy(siStripQuality, medianValues_TIB_Layer3, MeanAndRms_TIB_Layer3, badStripList, inSiStripQuality);
318  AnalyzeOccupancy(siStripQuality, medianValues_TIB_Layer4, MeanAndRms_TIB_Layer4, badStripList, inSiStripQuality);
319 
320  AnalyzeOccupancy(siStripQuality, medianValues_TOB_Layer1, MeanAndRms_TOB_Layer1, badStripList, inSiStripQuality);
321  AnalyzeOccupancy(siStripQuality, medianValues_TOB_Layer2, MeanAndRms_TOB_Layer2, badStripList, inSiStripQuality);
322  AnalyzeOccupancy(siStripQuality, medianValues_TOB_Layer3, MeanAndRms_TOB_Layer3, badStripList, inSiStripQuality);
323  AnalyzeOccupancy(siStripQuality, medianValues_TOB_Layer4, MeanAndRms_TOB_Layer4, badStripList, inSiStripQuality);
324  AnalyzeOccupancy(siStripQuality, medianValues_TOB_Layer5, MeanAndRms_TOB_Layer5, badStripList, inSiStripQuality);
325  AnalyzeOccupancy(siStripQuality, medianValues_TOB_Layer6, MeanAndRms_TOB_Layer6, badStripList, inSiStripQuality);
326 
328  siStripQuality, medianValues_TIDPlus_Disc1, MeanAndRms_TIDPlus_Disc1, badStripList, inSiStripQuality);
330  siStripQuality, medianValues_TIDPlus_Disc2, MeanAndRms_TIDPlus_Disc2, badStripList, inSiStripQuality);
332  siStripQuality, medianValues_TIDPlus_Disc3, MeanAndRms_TIDPlus_Disc3, badStripList, inSiStripQuality);
334  siStripQuality, medianValues_TIDMinus_Disc1, MeanAndRms_TIDMinus_Disc1, badStripList, inSiStripQuality);
336  siStripQuality, medianValues_TIDMinus_Disc2, MeanAndRms_TIDMinus_Disc2, badStripList, inSiStripQuality);
338  siStripQuality, medianValues_TIDMinus_Disc3, MeanAndRms_TIDMinus_Disc3, badStripList, inSiStripQuality);
339 
341  siStripQuality, medianValues_TECPlus_Disc1, MeanAndRms_TECPlus_Disc1, badStripList, inSiStripQuality);
343  siStripQuality, medianValues_TECPlus_Disc2, MeanAndRms_TECPlus_Disc2, badStripList, inSiStripQuality);
345  siStripQuality, medianValues_TECPlus_Disc3, MeanAndRms_TECPlus_Disc3, badStripList, inSiStripQuality);
347  siStripQuality, medianValues_TECPlus_Disc4, MeanAndRms_TECPlus_Disc4, badStripList, inSiStripQuality);
349  siStripQuality, medianValues_TECPlus_Disc5, MeanAndRms_TECPlus_Disc5, badStripList, inSiStripQuality);
351  siStripQuality, medianValues_TECPlus_Disc6, MeanAndRms_TECPlus_Disc6, badStripList, inSiStripQuality);
353  siStripQuality, medianValues_TECPlus_Disc7, MeanAndRms_TECPlus_Disc7, badStripList, inSiStripQuality);
355  siStripQuality, medianValues_TECPlus_Disc8, MeanAndRms_TECPlus_Disc8, badStripList, inSiStripQuality);
357  siStripQuality, medianValues_TECPlus_Disc9, MeanAndRms_TECPlus_Disc9, badStripList, inSiStripQuality);
358 
360  siStripQuality, medianValues_TECMinus_Disc1, MeanAndRms_TECMinus_Disc1, badStripList, inSiStripQuality);
362  siStripQuality, medianValues_TECMinus_Disc2, MeanAndRms_TECMinus_Disc2, badStripList, inSiStripQuality);
364  siStripQuality, medianValues_TECMinus_Disc3, MeanAndRms_TECMinus_Disc3, badStripList, inSiStripQuality);
366  siStripQuality, medianValues_TECMinus_Disc4, MeanAndRms_TECMinus_Disc4, badStripList, inSiStripQuality);
368  siStripQuality, medianValues_TECMinus_Disc5, MeanAndRms_TECMinus_Disc5, badStripList, inSiStripQuality);
370  siStripQuality, medianValues_TECMinus_Disc6, MeanAndRms_TECMinus_Disc6, badStripList, inSiStripQuality);
372  siStripQuality, medianValues_TECMinus_Disc7, MeanAndRms_TECMinus_Disc7, badStripList, inSiStripQuality);
374  siStripQuality, medianValues_TECMinus_Disc8, MeanAndRms_TECMinus_Disc8, badStripList, inSiStripQuality);
376  siStripQuality, medianValues_TECMinus_Disc9, MeanAndRms_TECMinus_Disc9, badStripList, inSiStripQuality);
377 
378  siStripQuality->fillBadComponents();
379 
380  // Fill DQM histograms
381  for (unsigned int i = 0; i < subDetName.size(); i++) {
382  projYDistanceVsStripNumber[i]->Add((TH1F*)distanceVsStripNumber[i]->ProjectionY());
384  distanceVsStripNumber[i]->ProfileX(pfxDistanceVsStripNumber[i]->GetName(), 1, 998));
385  projYNHitsVsStripNumber[i]->Add(nHitsVsStripNumber[i]->ProjectionY());
388  projYOccupancyVsStripNumber[i]->Add(occupancyVsStripNumber[i]->ProjectionY());
392  occupancyVsStripNumber[i]->ProfileX(pfxOccupancyVsStripNumber[i]->GetName(), -8., 0.));
396  occupancyHotStripsVsStripNumber[i]->ProfileX(pfxOccupancyHotStripsVsStripNumber[i]->GetName(), -8., 0.));
401  poissonProbVsStripNumber[i]->ProfileX(pfxPoissonProbVsStripNumber[i]->GetName(), -18., 0.));
407  distanceVsStripNumber[i]->ProjectionX(projXDistanceVsStripNumber[i]->GetName(), 1, 998));
408  }
409 
410  // Save output files
411 
412  if (WriteOutputFile_ == true) {
413  f->cd();
414  apvtree->Write();
415  striptree->Write();
416  f->Close();
417  }
418 
419  if (WriteDQMHistograms_ == true) {
420  dqmStore->cd();
422  }
423 
424  LogTrace("SiStripBadAPV") << ss.str() << std::endl;
425 }
bool isDebugEnabled()
static constexpr auto TEC
unsigned int tobLayer(const DetId &id) const
unsigned int tibModule(const DetId &id) const
unsigned int tidWheel(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
bool tecIsZMinusSide(const DetId &id) const
void CalculateMeanAndRMS(const std::vector< Apv > &, std::pair< double, double > *, int)
unsigned int tecRing(const DetId &id) const
ring id
#define LogTrace(id)
bool tidIsZMinusSide(const DetId &id) const
void AnalyzeOccupancy(SiStripQuality *, std::vector< Apv > &, std::pair< double, double > *, std::vector< unsigned int > &, const SiStripQuality *)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
static constexpr auto TOB
void fillBadComponents()
Definition: DetId.h:17
static constexpr auto TIB
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
Definition: DQMStore.cc:824
unsigned int tidRing(const DetId &id) const
unsigned int tibLayer(const DetId &id) const
unsigned int tobModule(const DetId &id) const
static constexpr auto TID

◆ fillStripDQMHistograms()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::fillStripDQMHistograms ( )
private

Definition at line 1183 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References isHot, nHitsGoodStripsVsStripNumber, nHitsHotStripsVsStripNumber, nHitsVsStripNumber, occupancyGoodStripsVsStripNumber, occupancyHotStripsVsStripNumber, occupancyVsStripNumber, poissonProb, poissonProbGoodStripsVsStripNumber, poissonProbHotStripsVsStripNumber, poissonProbVsStripNumber, singleStripOccupancy, strip_number, stripHits, subdetid, and vHotStripsInModule.

Referenced by AnalyzeOccupancy().

1183  {
1184  double logStripOccupancy = -1;
1185  double logPoissonProb = -1;
1186 
1187  if (singleStripOccupancy > 0)
1188  logStripOccupancy = log10(singleStripOccupancy);
1189  if (poissonProb > 0)
1190  logPoissonProb = log10(fabs(poissonProb));
1191 
1192  occupancyVsStripNumber[0]->Fill(strip_number, logStripOccupancy);
1193  occupancyVsStripNumber[subdetid - 2]->Fill(strip_number, logStripOccupancy);
1194  poissonProbVsStripNumber[0]->Fill(strip_number, logPoissonProb);
1195  poissonProbVsStripNumber[subdetid - 2]->Fill(strip_number, logPoissonProb);
1198 
1199  if (isHot) {
1200  vHotStripsInModule.push_back(strip_number);
1201  occupancyHotStripsVsStripNumber[0]->Fill(strip_number, logStripOccupancy);
1202  occupancyHotStripsVsStripNumber[subdetid - 2]->Fill(strip_number, logStripOccupancy);
1203  poissonProbHotStripsVsStripNumber[0]->Fill(strip_number, logPoissonProb);
1204  poissonProbHotStripsVsStripNumber[subdetid - 2]->Fill(strip_number, logPoissonProb);
1207  } else {
1208  occupancyGoodStripsVsStripNumber[0]->Fill(strip_number, logStripOccupancy);
1209  occupancyGoodStripsVsStripNumber[subdetid - 2]->Fill(strip_number, logStripOccupancy);
1210  poissonProbGoodStripsVsStripNumber[0]->Fill(strip_number, logPoissonProb);
1211  poissonProbGoodStripsVsStripNumber[subdetid - 2]->Fill(strip_number, logPoissonProb);
1214  }
1215 }

◆ initializeDQMHistograms()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::initializeDQMHistograms ( )
private

Definition at line 836 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References absoluteOccupancy, dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookProfile(), distanceVsStripNumber, dqmStore, dqm::legacy::MonitorElement::getTH1F(), dqm::legacy::MonitorElement::getTH2F(), dqm::legacy::MonitorElement::getTProfile(), HltBtagPostValidation_cff::histoName, mps_fire::i, dqmiolumiharvest::j, layerName, medianOccupancy, medianVsAbsoluteOccupancy, nHitsGoodStripsVsStripNumber, nHitsHotStripsVsStripNumber, nHitsVsStripNumber, nLayers, occupancyGoodStripsVsStripNumber, occupancyHotStripsVsStripNumber, occupancyVsStripNumber, Utilities::operator, oss, pfxDistanceVsStripNumber, pfxNHitsGoodStripsVsStripNumber, pfxNHitsHotStripsVsStripNumber, pfxNHitsVsStripNumber, pfxOccupancyGoodStripsVsStripNumber, pfxOccupancyHotStripsVsStripNumber, pfxOccupancyVsStripNumber, pfxPoissonProbGoodStripsVsStripNumber, pfxPoissonProbHotStripsVsStripNumber, pfxPoissonProbVsStripNumber, poissonProbGoodStripsVsStripNumber, poissonProbHotStripsVsStripNumber, poissonProbVsStripNumber, projXDistanceVsStripNumber, projXNHitsGoodStripsVsStripNumber, projXNHitsHotStripsVsStripNumber, projXNHitsVsStripNumber, projYDistanceVsStripNumber, projYNHitsGoodStripsVsStripNumber, projYNHitsHotStripsVsStripNumber, projYNHitsVsStripNumber, projYOccupancyGoodStripsVsStripNumber, projYOccupancyHotStripsVsStripNumber, projYOccupancyVsStripNumber, projYPoissonProbGoodStripsVsStripNumber, projYPoissonProbHotStripsVsStripNumber, projYPoissonProbVsStripNumber, dqm::implementation::DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, subDetName, tmp, and tmp_prof.

Referenced by extractBadAPVSandStrips().

836  {
837  oss.str("");
838  oss << 1; //runNumber
839 
841  dqmStore->setCurrentFolder("ChannelStatusPlots");
842 
843  // Initialize histograms
844  subDetName.push_back("");
845  subDetName.push_back("TIB");
846  subDetName.push_back("TID");
847  subDetName.push_back("TOB");
848  subDetName.push_back("TEC");
849  nLayers.push_back(0);
850  nLayers.push_back(4);
851  nLayers.push_back(3);
852  nLayers.push_back(6);
853  nLayers.push_back(9);
854  layerName.push_back("");
855  layerName.push_back("Layer");
856  layerName.push_back("Disk");
857  layerName.push_back("Layer");
858  layerName.push_back("Disk");
859 
861  std::string histoTitle;
862 
863  for (unsigned int i = 0; i < subDetName.size(); i++) {
864  histoName = "distanceVsStripNumber" + subDetName[i];
865  histoTitle = "Distance between hot strips vs. strip number";
866  if (i != 0)
867  histoTitle += " in " + subDetName[i];
868  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 999, 0.5, 999.5);
869  distanceVsStripNumber.push_back(tmp->getTH2F());
870 
871  histoName = "pfxDistanceVsStripNumber" + subDetName[i];
872  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
875  pfxDistanceVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
876  pfxDistanceVsStripNumber[i]->GetYaxis()->SetTitle("Distance");
877 
878  histoName = "projXDistanceVsStripNumber" + subDetName[i];
879  histoTitle = "Number of hot strips vs. strip number";
880  if (i != 0)
881  histoTitle += " in " + subDetName[i];
882  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
883  projXDistanceVsStripNumber.push_back(tmp->getTH1F());
884  projXDistanceVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
885  projXDistanceVsStripNumber[i]->GetYaxis()->SetTitle("N_{hot}");
886 
887  histoName = "projYDistanceVsStripNumber" + subDetName[i];
888  histoTitle = "Distribution of distance between hot strips";
889  if (i != 0)
890  histoTitle += " in " + subDetName[i];
891  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 999, 0.5, 999.5);
892  projYDistanceVsStripNumber.push_back(tmp->getTH1F());
893  projYDistanceVsStripNumber[i]->GetXaxis()->SetTitle("Distance");
894  projYDistanceVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
895 
896  //
897  histoName = "occupancyVsStripNumber" + subDetName[i];
898  histoTitle = "Occupancy of strips vs. strip number";
899  if (i != 0)
900  histoTitle += " in " + subDetName[i];
901  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -8., 0.);
902  occupancyVsStripNumber.push_back(tmp->getTH2F());
903 
904  histoName = "pfxOccupancyVsStripNumber" + subDetName[i];
905  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
908  pfxOccupancyVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
909  pfxOccupancyVsStripNumber[i]->GetYaxis()->SetTitle("log_{10}(Occupancy)");
910 
911  histoName = "projYOccupancyVsStripNumber" + subDetName[i];
912  histoTitle = "Distribution of strip occupancy";
913  if (i != 0)
914  histoTitle += " in " + subDetName[i];
915  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -8., 0.);
917  projYOccupancyVsStripNumber[i]->GetXaxis()->SetTitle("log_{10}(Occupancy)");
918  projYOccupancyVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
919 
920  //
921  histoName = "occupancyHotStripsVsStripNumber" + subDetName[i];
922  histoTitle = "Occupancy of hot strips vs. strip number";
923  if (i != 0)
924  histoTitle += " in " + subDetName[i];
925  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -8., 0.);
927 
928  histoName = "pfxOccupancyHotStripsVsStripNumber" + subDetName[i];
929  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
932  pfxOccupancyHotStripsVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
933  pfxOccupancyHotStripsVsStripNumber[i]->GetYaxis()->SetTitle("log_{10}(Occupancy)");
934 
935  histoName = "projYOccupancyHotStripsVsStripNumber" + subDetName[i];
936  histoTitle = "Distribution of hot strip occupancy";
937  if (i != 0)
938  histoTitle += " in " + subDetName[i];
939  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -8., 0.);
941  projYOccupancyHotStripsVsStripNumber[i]->GetXaxis()->SetTitle("log_{10}(Occupancy)");
942  projYOccupancyHotStripsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
943 
944  //
945  histoName = "occupancyGoodStripsVsStripNumber" + subDetName[i];
946  histoTitle = "Occupancy of good strips vs. strip number";
947  if (i != 0)
948  histoTitle += " in " + subDetName[i];
949  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -8., 0.);
951 
952  histoName = "pfxOccupancyGoodStripsVsStripNumber" + subDetName[i];
953  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
956  pfxOccupancyGoodStripsVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
957  pfxOccupancyGoodStripsVsStripNumber[i]->GetYaxis()->SetTitle("log_{10}(Occupancy)");
958 
959  histoName = "projYOccupancyGoodStripsVsStripNumber" + subDetName[i];
960  histoTitle = "Distribution of good strip occupancy";
961  if (i != 0)
962  histoTitle += " in " + subDetName[i];
963  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -8., 0.);
965  projYOccupancyGoodStripsVsStripNumber[i]->GetXaxis()->SetTitle("log_{10}(Occupancy)");
966  projYOccupancyGoodStripsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
967 
968  //
969  histoName = "poissonProbVsStripNumber" + subDetName[i];
970  histoTitle = "Poisson probability of strips vs. strip number";
971  if (i != 0)
972  histoTitle += " in " + subDetName[i];
973  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -18., 0.);
974  poissonProbVsStripNumber.push_back(tmp->getTH2F());
975 
976  histoName = "pfxPoissonProbVsStripNumber" + subDetName[i];
977  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
980  pfxPoissonProbVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
981  pfxPoissonProbVsStripNumber[i]->GetYaxis()->SetTitle("log_{10}(Probability)");
982 
983  histoName = "projYPoissonProbVsStripNumber" + subDetName[i];
984  histoTitle = "Distribution of strip Poisson probability";
985  if (i != 0)
986  histoTitle += " in " + subDetName[i];
987  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -18., 0.);
989  projYPoissonProbVsStripNumber[i]->GetXaxis()->SetTitle("log_{10}(Probability)");
990  projYPoissonProbVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
991 
992  //
993  histoName = "poissonProbHotStripsVsStripNumber" + subDetName[i];
994  histoTitle = "Poisson probability of hot strips vs. strip number";
995  if (i != 0)
996  histoTitle += " in " + subDetName[i];
997  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -18., 0.);
999 
1000  histoName = "pfxPoissonProbHotStripsVsStripNumber" + subDetName[i];
1001  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1002  tmp = dqmStore->bookProfile(histoName.c_str(), tmp_prof);
1004  pfxPoissonProbHotStripsVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
1005  pfxPoissonProbHotStripsVsStripNumber[i]->GetYaxis()->SetTitle("log_{10}(Probability)");
1006 
1007  histoName = "projYPoissonProbHotStripsVsStripNumber" + subDetName[i];
1008  histoTitle = "Distribution of hot strip Poisson probability";
1009  if (i != 0)
1010  histoTitle += " in " + subDetName[i];
1011  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -18., 0.);
1013  projYPoissonProbHotStripsVsStripNumber[i]->GetXaxis()->SetTitle("log_{10}(Probability)");
1014  projYPoissonProbHotStripsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
1015 
1016  //
1017  histoName = "poissonProbGoodStripsVsStripNumber" + subDetName[i];
1018  histoTitle = "Poisson probability of good strips vs. strip number";
1019  if (i != 0)
1020  histoTitle += " in " + subDetName[i];
1021  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -18., 0.);
1023 
1024  histoName = "pfxPoissonProbGoodStripsVsStripNumber" + subDetName[i];
1025  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1026  tmp = dqmStore->bookProfile(histoName.c_str(), tmp_prof);
1028  pfxPoissonProbGoodStripsVsStripNumber[i]->GetXaxis()->SetTitle("Strip");
1029  pfxPoissonProbGoodStripsVsStripNumber[i]->GetYaxis()->SetTitle("log_{10}(Probability)");
1030 
1031  histoName = "projYPoissonProbGoodStripsVsStripNumber" + subDetName[i];
1032  histoTitle = "Distribution of good strip Poisson probability";
1033  if (i != 0)
1034  histoTitle += " in " + subDetName[i];
1035  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -18., 0.);
1037  projYPoissonProbGoodStripsVsStripNumber[i]->GetXaxis()->SetTitle("log_{10}(Probability)");
1038  projYPoissonProbGoodStripsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
1039 
1040  //
1041  histoName = "nHitsVsStripNumber" + subDetName[i];
1042  histoTitle = "NHits in strips vs. strip number";
1043  if (i != 0)
1044  histoTitle += " in " + subDetName[i];
1045  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 10000, -0.5, 9999.5);
1046  nHitsVsStripNumber.push_back(tmp->getTH2F());
1047 
1048  histoName = "pfxNHitsVsStripNumber" + subDetName[i];
1049  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1050  tmp = dqmStore->bookProfile(histoName.c_str(), tmp_prof);
1051  pfxNHitsVsStripNumber.push_back(tmp->getTProfile());
1052 
1053  histoName = "projXNHitsVsStripNumber" + subDetName[i];
1054  histoTitle = "Cumulative nHits in strips vs. strip number";
1055  if (i != 0)
1056  histoTitle += " in " + subDetName[i];
1057  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1058  projXNHitsVsStripNumber.push_back(tmp->getTH1F());
1059 
1060  histoName = "projYNHitsVsStripNumber" + subDetName[i];
1061  histoTitle = "Distribution of nHits for all strips";
1062  if (i != 0)
1063  histoTitle += " in " + subDetName[i];
1064  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 10000, -0.5, 9999.5);
1065  projYNHitsVsStripNumber.push_back(tmp->getTH1F());
1066  projYNHitsVsStripNumber[i]->GetXaxis()->SetTitle("N_{hits}");
1067  projYNHitsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
1068 
1069  //
1070  histoName = "nHitsHotStripsVsStripNumber" + subDetName[i];
1071  histoTitle = "NHits in hot strips vs. strip number";
1072  if (i != 0)
1073  histoTitle += " in " + subDetName[i];
1074  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 10000, -0.5, 9999.5);
1075  nHitsHotStripsVsStripNumber.push_back(tmp->getTH2F());
1076 
1077  histoName = "pfxNHitsHotStripsVsStripNumber" + subDetName[i];
1078  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1079  tmp = dqmStore->bookProfile(histoName.c_str(), tmp_prof);
1081 
1082  histoName = "projXNHitsHotStripsVsStripNumber" + subDetName[i];
1083  histoTitle = "Cumulative nHits in hot strips vs. strip number";
1084  if (i != 0)
1085  histoTitle += " in " + subDetName[i];
1086  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1088 
1089  histoName = "projYNHitsHotStripsVsStripNumber" + subDetName[i];
1090  histoTitle = "Distribution of nHits for hot strips";
1091  if (i != 0)
1092  histoTitle += " in " + subDetName[i];
1093  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 10000, -0.5, 9999.5);
1095  projYNHitsHotStripsVsStripNumber[i]->GetXaxis()->SetTitle("N_{hits}");
1096  projYNHitsHotStripsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
1097 
1098  //
1099  histoName = "nHitsGoodStripsVsStripNumber" + subDetName[i];
1100  histoTitle = "NHits in good strips vs. strip number";
1101  if (i != 0)
1102  histoTitle += " in " + subDetName[i];
1103  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 10000, -0.5, 9999.5);
1105 
1106  histoName = "pfxNHitsGoodStripsVsStripNumber" + subDetName[i];
1107  tmp_prof = new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1108  tmp = dqmStore->bookProfile(histoName.c_str(), tmp_prof);
1110 
1111  histoName = "projXNHitsGoodStripsVsStripNumber" + subDetName[i];
1112  histoTitle = "Cumulative nHits in good strips vs. strip number";
1113  if (i != 0)
1114  histoTitle += " in " + subDetName[i];
1115  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1117 
1118  histoName = "projYNHitsGoodStripsVsStripNumber" + subDetName[i];
1119  histoTitle = "Distribution of nHits for good strips";
1120  if (i != 0)
1121  histoTitle += " in " + subDetName[i];
1122  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 10000, -0.5, 9999.5);
1124  projYNHitsGoodStripsVsStripNumber[i]->GetXaxis()->SetTitle("N_{hits}");
1125  projYNHitsGoodStripsVsStripNumber[i]->GetYaxis()->SetTitle("N_{strips}");
1126 
1127  for (unsigned int j = 0; j <= nLayers[i]; j++) {
1128  histoName = "medianVsAbsoluteOccupancy" + subDetName[i];
1129  if (j != 0) {
1130  oss.str("");
1131  oss << j;
1132  histoName += layerName[i] + oss.str();
1133  }
1134  histoTitle = "Median APV occupancy vs. absolute APV occupancy";
1135  if (i != 0)
1136  histoTitle += " in " + subDetName[i];
1137  if (j != 0) {
1138  histoTitle += " " + layerName[i] + " " + oss.str();
1139  }
1140  tmp = dqmStore->book2D(histoName.c_str(), histoTitle.c_str(), 1000, 0., 6., 1000, -1., 3.);
1142  medianVsAbsoluteOccupancy[i][j]->Rebin2D(10, 10);
1143  medianVsAbsoluteOccupancy[i][j]->GetXaxis()->SetTitle("log_{10}(Abs. Occupancy)");
1144  medianVsAbsoluteOccupancy[i][j]->GetYaxis()->SetTitle("log_{10}(Median Occupancy)");
1145  //
1146  histoName = "medianOccupancy" + subDetName[i];
1147  if (j != 0) {
1148  oss.str("");
1149  oss << j;
1150  histoName += layerName[i] + oss.str();
1151  }
1152  histoTitle = "Median APV occupancy";
1153  if (i != 0)
1154  histoTitle += " in " + subDetName[i];
1155  if (j != 0) {
1156  histoTitle += " " + layerName[i] + " " + oss.str();
1157  }
1158  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, -1., 3.);
1159  medianOccupancy[i][j] = tmp->getTH1F();
1160  medianOccupancy[i][j]->GetXaxis()->SetTitle("log_{10}(Occupancy)");
1161  medianOccupancy[i][j]->GetYaxis()->SetTitle("APVs");
1162  //
1163  histoName = "absoluteOccupancy" + subDetName[i];
1164  if (j != 0) {
1165  oss.str("");
1166  oss << j;
1167  histoName += layerName[i] + oss.str();
1168  }
1169  histoTitle = "Absolute APV occupancy";
1170  if (i != 0)
1171  histoTitle += " in " + subDetName[i];
1172  if (j != 0) {
1173  histoTitle += " " + layerName[i] + " " + oss.str();
1174  }
1175  tmp = dqmStore->book1D(histoName.c_str(), histoTitle.c_str(), 1000, 0., 6.);
1176  absoluteOccupancy[i][j] = tmp->getTH1F();
1177  absoluteOccupancy[i][j]->GetXaxis()->SetTitle("log_{10}(Occupancy)");
1178  absoluteOccupancy[i][j]->GetYaxis()->SetTitle("APVs");
1179  }
1180  }
1181 }
virtual TProfile * getTProfile() const
void setCurrentFolder(std::string const &fullpath) override
Definition: DQMStore.h:646
virtual TH2F * getTH2F() const
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
virtual TH1F * getTH1F() const
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98

◆ iterativeSearch()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::iterativeSearch ( Apv histo,
std::vector< unsigned int > &  vect,
int  apv 
)
private

Definition at line 676 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References avgapvhits, change_name::diff, SiStripBadStrip::encode(), evaluatePoissonian(), timingPdfMaker::histo, hotstripsperapv, hotstripspermodule, mps_fire::i, createfilelist::int, edm::isDebugEnabled(), ishot, LogTrace, median(), medianapvhits, minNevents_, MinNumEntries_, MinNumEntriesPerStrip_, SiStripMonitorCluster_cfi::Nbins, Nevents_, poissonprob, pQuality, prob_, ratio_, striphits, and stripoccupancy.

Referenced by AnalyzeOccupancy().

678  {
679  if (!histo.NEntries[apv] || histo.NEntries[apv] <= MinNumEntries_ || histo.NEntries[apv] <= minNevents_)
680  return;
681 
682  size_t startingSize = vect.size();
683  long double diff = 1. - prob_;
684 
685  size_t Nbins = histo.th1f[apv]->GetNbinsX();
686  size_t ibinStart = 1;
687  size_t ibinStop = Nbins + 1;
688  int MaxEntry = (int)histo.th1f[apv]->GetMaximum();
689 
690  std::vector<long double> vPoissonProbs(MaxEntry + 1, 0);
691  long double meanVal = 1. * histo.NEntries[apv] / (1. * Nbins - histo.NEmptyBins[apv]);
692  evaluatePoissonian(vPoissonProbs, meanVal);
693 
694  // Find median occupancy, taking into account only good strips
695  unsigned int goodstripentries[128];
696  int nGoodStrips = 0;
697  for (size_t i = ibinStart; i < ibinStop; ++i) {
698  if (ishot[(apv * 128) + i - 1] == 0) {
699  goodstripentries[nGoodStrips] = (unsigned int)histo.th1f[apv]->GetBinContent(i);
700  nGoodStrips++;
701  }
702  }
703  double median = TMath::Median(nGoodStrips, goodstripentries);
704 
705  for (size_t i = ibinStart; i < ibinStop; ++i) {
706  unsigned int entries = (unsigned int)histo.th1f[apv]->GetBinContent(i);
707 
708  if (ishot[i - 1] == 0) {
709  stripoccupancy[i - 1] = entries / (double)Nevents_;
710  striphits[i - 1] = entries;
711  poissonprob[i - 1] = 1 - vPoissonProbs[entries];
712  medianapvhits[apv] = median;
713  avgapvhits[apv] = meanVal;
714  }
715 
716  if (entries <= MinNumEntriesPerStrip_ || entries <= minNevents_ || entries / median < ratio_)
717  continue;
718 
719  if (diff < vPoissonProbs[entries]) {
720  ishot[i - 1] = 1;
722  hotstripsperapv[apv]++;
723  histo.th1f[apv]->SetBinContent(i, 0.);
724  histo.NEntries[apv] -= entries;
725  histo.NEmptyBins[apv]++;
726  if (edm::isDebugEnabled())
727  LogTrace("SiStripHotStrip") << " rejecting strip " << (apv * 128) + i - 1 << " value " << entries << " diff "
728  << diff << " prob " << vPoissonProbs[entries] << std::endl;
729  vect.push_back(pQuality->encode((apv * 128) + i - 1, 1, 0));
730  }
731  }
732  if (edm::isDebugEnabled())
733  LogTrace("SiStripHotStrip") << " [SiStripHotStripAlgorithmFromClusterOccupancy::iterativeSearch] Nbins=" << Nbins
734  << " MaxEntry=" << MaxEntry << " meanVal=" << meanVal
735  << " NEmptyBins=" << histo.NEmptyBins[apv] << " NEntries=" << histo.NEntries[apv]
736  << " thEntries " << histo.th1f[apv]->GetEntries() << " startingSize " << startingSize
737  << " vector.size " << vect.size() << std::endl;
738 
739  if (vect.size() != startingSize)
740  iterativeSearch(histo, vect, apv);
741 }
bool isDebugEnabled()
#define LogTrace(id)
T median(std::vector< T > values)
Definition: median.h:16
unsigned int encode(const unsigned short &first, const unsigned short &NconsecutiveBadStrips, const unsigned short &flag=0)

◆ setAbsoluteLowThreshold()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setAbsoluteLowThreshold ( long double  absolute_low)
inline

◆ setAbsoluteOccupancyThreshold()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setAbsoluteOccupancyThreshold ( long double  absolute_occupancy)
inline

◆ setBasicTreeParameters()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setBasicTreeParameters ( int  detid)
private

Definition at line 750 of file SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy.cc.

References gather_cfg::cout, detrawid, disc, isback, isexternalstring, isstereo, iszminusside, layer_ring, module_number, rodstringpetal, DetId::subdetId(), subdetid, StripSubdetector::TEC, TrackerTopology::tecIsBackPetal(), TrackerTopology::tecIsStereo(), TrackerTopology::tecIsZMinusSide(), TrackerTopology::tecModule(), TrackerTopology::tecPetalNumber(), TrackerTopology::tecRing(), TrackerTopology::tecWheel(), StripSubdetector::TIB, TrackerTopology::tibIsExternalString(), TrackerTopology::tibIsStereo(), TrackerTopology::tibIsZMinusSide(), TrackerTopology::tibLayer(), TrackerTopology::tibModule(), TrackerTopology::tibString(), StripSubdetector::TID, TrackerTopology::tidIsBackRing(), TrackerTopology::tidIsStereo(), TrackerTopology::tidIsZMinusSide(), TrackerTopology::tidModule(), TrackerTopology::tidRing(), TrackerTopology::tidWheel(), StripSubdetector::TOB, TrackerTopology::tobIsStereo(), TrackerTopology::tobIsZMinusSide(), TrackerTopology::tobLayer(), TrackerTopology::tobModule(), TrackerTopology::tobRod(), and tTopo.

Referenced by AnalyzeOccupancy().

750  {
751  DetId DetectorID = DetId(detid);
752 
753  detrawid = detid;
754  subdetid = DetectorID.subdetId();
755 
756  switch (DetectorID.subdetId()) {
758  layer_ring = tTopo->tibLayer(detid);
759  disc = -1;
760  isstereo = tTopo->tibIsStereo(detid);
761  isback = -1;
762  if (tTopo->tibIsExternalString(detid))
763  isexternalstring = 1;
764  else
765  isexternalstring = 0;
766  if (tTopo->tibIsZMinusSide(detid))
767  iszminusside = 1;
768  else
769  iszminusside = 0;
770  rodstringpetal = tTopo->tibString(detid);
771  module_number = tTopo->tibModule(detid);
772 
773  break;
774 
776  layer_ring = tTopo->tidRing(detid);
777  disc = tTopo->tidWheel(detid);
778  isstereo = tTopo->tidIsStereo(detid);
779  if (tTopo->tidIsBackRing(detid))
780  isback = 1;
781  else
782  isback = 0;
783  if (tTopo->tidIsZMinusSide(detid))
784  iszminusside = 1;
785  else
786  iszminusside = 0;
787  isexternalstring = -1;
788  rodstringpetal = -1;
789  module_number = tTopo->tidModule(detid);
790 
791  break;
792 
794  layer_ring = tTopo->tobLayer(detid);
795  disc = -1;
796  isstereo = tTopo->tobIsStereo(detid);
797  isback = -1;
798  if (tTopo->tobIsZMinusSide(detid))
799  iszminusside = 1;
800  else
801  iszminusside = 0;
802  isexternalstring = -1;
803  rodstringpetal = tTopo->tobRod(detid);
804  module_number = tTopo->tobModule(detid);
805 
806  break;
807 
809  layer_ring = tTopo->tecRing(detid);
810  disc = tTopo->tecWheel(detid);
811  isstereo = tTopo->tecIsStereo(detid);
812  if (tTopo->tecIsBackPetal(detid))
813  isback = 1;
814  else
815  isback = 0;
816  if (tTopo->tecIsZMinusSide(detid))
817  iszminusside = 1;
818  else
819  iszminusside = 0;
820  isexternalstring = -1;
822  module_number = tTopo->tecModule(detid);
823 
824  break;
825 
826  default:
827  std::cout << "### Detector does not belong to TIB, TID, TOB or TEC !? ###" << std::endl;
828  std::cout << "### DetRawId: " << detid << " ###" << std::endl;
829  }
830 }
unsigned int tecPetalNumber(const DetId &id) const
static constexpr auto TEC
unsigned int tobLayer(const DetId &id) const
bool tobIsZMinusSide(const DetId &id) const
unsigned int tibModule(const DetId &id) const
bool tibIsExternalString(const DetId &id) const
unsigned int tidWheel(const DetId &id) const
bool tibIsZMinusSide(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
bool tidIsBackRing(const DetId &id) const
unsigned int tibString(const DetId &id) const
bool tecIsZMinusSide(const DetId &id) const
unsigned int tecRing(const DetId &id) const
ring id
bool tibIsStereo(const DetId &id) const
bool tidIsZMinusSide(const DetId &id) const
bool tobIsStereo(const DetId &id) const
unsigned int tidModule(const DetId &id) const
unsigned int tecModule(const DetId &id) const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
static constexpr auto TOB
bool tecIsBackPetal(const DetId &id) const
Definition: DetId.h:17
static constexpr auto TIB
bool tecIsStereo(const DetId &id) const
unsigned int tobRod(const DetId &id) const
bool tidIsStereo(const DetId &id) const
unsigned int tidRing(const DetId &id) const
unsigned int tibLayer(const DetId &id) const
unsigned int tobModule(const DetId &id) const
static constexpr auto TID

◆ setHighOccupancyThreshold()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setHighOccupancyThreshold ( long double  high_occupancy)
inline

◆ setLowOccupancyThreshold()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setLowOccupancyThreshold ( long double  low_occupancy)
inline

◆ setMinNumEntries()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setMinNumEntries ( unsigned short  m)
inline

◆ setMinNumEntriesPerStrip()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setMinNumEntriesPerStrip ( unsigned short  m)
inline

◆ setMinNumOfEvents()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setMinNumOfEvents ( )

◆ setNumberIterations()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setNumberIterations ( int  number_iterations)
inline

◆ setNumberOfEvents()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setNumberOfEvents ( double  Nevents)
inline

◆ setOutputFileName()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setOutputFileName ( std::string  OutputFileName,
bool  WriteOutputFile,
std::string  DQMOutfileName,
bool  WriteDQMHistograms 
)
inline

◆ setProbabilityThreshold()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setProbabilityThreshold ( long double  prob)
inline

◆ setTrackerGeometry()

void SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::setTrackerGeometry ( const TrackerGeometry tkgeom)
inline

Member Data Documentation

◆ absolute_occupancy_

long double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::absolute_occupancy_
private

◆ absolutelow_

long double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::absolutelow_
private

◆ absoluteOccupancy

TH1F* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::absoluteOccupancy[5][10]
private

◆ apv_channel

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::apv_channel
private

◆ apv_number

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::apv_number
private

◆ apvAbsoluteOccupancy

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::apvAbsoluteOccupancy
private

◆ apvMedianOccupancy

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::apvMedianOccupancy
private

◆ apvtree

TTree* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::apvtree
private

◆ avgAPVHits

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::avgAPVHits
private

◆ avgapvhits

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::avgapvhits[6]
private

◆ detrawid

uint32_t SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::detrawid
private

◆ disc

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::disc
private

◆ distance

unsigned int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::distance
private

◆ distanceL

unsigned int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::distanceL
private

◆ distanceR

unsigned int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::distanceR
private

◆ distanceVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::distanceVsStripNumber
private

◆ DQMOutfileName_

std::string SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::DQMOutfileName_
private

◆ dqmStore

DQMStore* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::dqmStore
private

◆ f

TFile* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::f
private

◆ global_position_x

float SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::global_position_x
private

◆ global_position_y

float SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::global_position_y
private

◆ global_position_z

float SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::global_position_z
private

◆ highoccupancy_

long double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::highoccupancy_
private

◆ hotStripsPerAPV

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::hotStripsPerAPV
private

◆ hotstripsperapv

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::hotstripsperapv[6]
private

◆ hotStripsPerModule

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::hotStripsPerModule
private

◆ hotstripspermodule

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::hotstripspermodule
private

◆ isback

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::isback
private

◆ isBad

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::isBad
private

◆ isexternalstring

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::isexternalstring
private

◆ isHot

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::isHot
private

◆ ishot

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::ishot[128]
private

◆ isstereo

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::isstereo
private

◆ iszminusside

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::iszminusside
private

◆ layer_ring

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::layer_ring
private

◆ layerName

std::vector<std::string> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::layerName
private

◆ lowoccupancy_

long double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::lowoccupancy_
private

◆ MeanAndRms_TECMinus_Disc1

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc1[7]
private

◆ MeanAndRms_TECMinus_Disc2

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc2[7]
private

◆ MeanAndRms_TECMinus_Disc3

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc3[7]
private

◆ MeanAndRms_TECMinus_Disc4

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc4[7]
private

◆ MeanAndRms_TECMinus_Disc5

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc5[7]
private

◆ MeanAndRms_TECMinus_Disc6

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc6[7]
private

◆ MeanAndRms_TECMinus_Disc7

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc7[7]
private

◆ MeanAndRms_TECMinus_Disc8

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc8[7]
private

◆ MeanAndRms_TECMinus_Disc9

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECMinus_Disc9[7]
private

◆ MeanAndRms_TECPlus_Disc1

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc1[7]
private

◆ MeanAndRms_TECPlus_Disc2

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc2[7]
private

◆ MeanAndRms_TECPlus_Disc3

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc3[7]
private

◆ MeanAndRms_TECPlus_Disc4

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc4[7]
private

◆ MeanAndRms_TECPlus_Disc5

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc5[7]
private

◆ MeanAndRms_TECPlus_Disc6

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc6[7]
private

◆ MeanAndRms_TECPlus_Disc7

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc7[7]
private

◆ MeanAndRms_TECPlus_Disc8

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc8[7]
private

◆ MeanAndRms_TECPlus_Disc9

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TECPlus_Disc9[7]
private

◆ MeanAndRms_TIB_Layer1

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer1[7]
private

◆ MeanAndRms_TIB_Layer2

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer2[7]
private

◆ MeanAndRms_TIB_Layer3

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer3[7]
private

◆ MeanAndRms_TIB_Layer4

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIB_Layer4[7]
private

◆ MeanAndRms_TIDMinus_Disc1

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIDMinus_Disc1[7]
private

◆ MeanAndRms_TIDMinus_Disc2

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIDMinus_Disc2[7]
private

◆ MeanAndRms_TIDMinus_Disc3

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIDMinus_Disc3[7]
private

◆ MeanAndRms_TIDPlus_Disc1

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIDPlus_Disc1[7]
private

◆ MeanAndRms_TIDPlus_Disc2

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIDPlus_Disc2[7]
private

◆ MeanAndRms_TIDPlus_Disc3

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TIDPlus_Disc3[7]
private

◆ MeanAndRms_TOB_Layer1

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer1[7]
private

◆ MeanAndRms_TOB_Layer2

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer2[7]
private

◆ MeanAndRms_TOB_Layer3

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer3[7]
private

◆ MeanAndRms_TOB_Layer4

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer4[7]
private

◆ MeanAndRms_TOB_Layer5

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer5[7]
private

◆ MeanAndRms_TOB_Layer6

std::pair<double, double> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MeanAndRms_TOB_Layer6[7]
private

◆ medianAPVHits

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianAPVHits
private

◆ medianapvhits

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianapvhits[6]
private

◆ medianOccupancy

TH1F* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianOccupancy[5][10]
private

◆ medianValues_TECMinus_Disc1

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc1
private

◆ medianValues_TECMinus_Disc2

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc2
private

◆ medianValues_TECMinus_Disc3

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc3
private

◆ medianValues_TECMinus_Disc4

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc4
private

◆ medianValues_TECMinus_Disc5

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc5
private

◆ medianValues_TECMinus_Disc6

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc6
private

◆ medianValues_TECMinus_Disc7

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc7
private

◆ medianValues_TECMinus_Disc8

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc8
private

◆ medianValues_TECMinus_Disc9

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECMinus_Disc9
private

◆ medianValues_TECPlus_Disc1

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc1
private

◆ medianValues_TECPlus_Disc2

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc2
private

◆ medianValues_TECPlus_Disc3

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc3
private

◆ medianValues_TECPlus_Disc4

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc4
private

◆ medianValues_TECPlus_Disc5

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc5
private

◆ medianValues_TECPlus_Disc6

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc6
private

◆ medianValues_TECPlus_Disc7

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc7
private

◆ medianValues_TECPlus_Disc8

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc8
private

◆ medianValues_TECPlus_Disc9

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TECPlus_Disc9
private

◆ medianValues_TIB_Layer1

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIB_Layer1
private

◆ medianValues_TIB_Layer2

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIB_Layer2
private

◆ medianValues_TIB_Layer3

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIB_Layer3
private

◆ medianValues_TIB_Layer4

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIB_Layer4
private

◆ medianValues_TIDMinus_Disc1

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIDMinus_Disc1
private

◆ medianValues_TIDMinus_Disc2

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIDMinus_Disc2
private

◆ medianValues_TIDMinus_Disc3

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIDMinus_Disc3
private

◆ medianValues_TIDPlus_Disc1

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIDPlus_Disc1
private

◆ medianValues_TIDPlus_Disc2

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIDPlus_Disc2
private

◆ medianValues_TIDPlus_Disc3

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TIDPlus_Disc3
private

◆ medianValues_TOB_Layer1

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TOB_Layer1
private

◆ medianValues_TOB_Layer2

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TOB_Layer2
private

◆ medianValues_TOB_Layer3

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TOB_Layer3
private

◆ medianValues_TOB_Layer4

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TOB_Layer4
private

◆ medianValues_TOB_Layer5

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TOB_Layer5
private

◆ medianValues_TOB_Layer6

std::vector<Apv> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianValues_TOB_Layer6
private

◆ medianVsAbsoluteOccupancy

TH2F* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::medianVsAbsoluteOccupancy[5][10]
private

◆ minNevents_

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::minNevents_
private

◆ MinNumEntries_

unsigned short SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MinNumEntries_
private

◆ MinNumEntriesPerStrip_

unsigned short SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::MinNumEntriesPerStrip_
private

◆ module_number

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::module_number
private

◆ Nevents_

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::Nevents_
private

◆ nHitsGoodStripsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::nHitsGoodStripsVsStripNumber
private

◆ nHitsHotStripsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::nHitsHotStripsVsStripNumber
private

◆ nHitsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::nHitsVsStripNumber
private

◆ nLayers

std::vector<unsigned int> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::nLayers
private

◆ number_apvs

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::number_apvs
private

◆ number_strips

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::number_strips
private

◆ numberiterations_

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::numberiterations_
private

◆ occupancyGoodStripsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::occupancyGoodStripsVsStripNumber
private

◆ occupancyHotStripsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::occupancyHotStripsVsStripNumber
private

◆ occupancyVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::occupancyVsStripNumber
private

◆ oss

std::ostringstream SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::oss
private

◆ outfilename

std::string SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::outfilename
private

◆ OutFileName_

std::string SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::OutFileName_
private

◆ pfxDistanceVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxDistanceVsStripNumber
private

◆ pfxNHitsGoodStripsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxNHitsGoodStripsVsStripNumber
private

◆ pfxNHitsHotStripsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxNHitsHotStripsVsStripNumber
private

◆ pfxNHitsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxNHitsVsStripNumber
private

◆ pfxOccupancyGoodStripsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxOccupancyGoodStripsVsStripNumber
private

◆ pfxOccupancyHotStripsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxOccupancyHotStripsVsStripNumber
private

◆ pfxOccupancyVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxOccupancyVsStripNumber
private

◆ pfxPoissonProbGoodStripsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxPoissonProbGoodStripsVsStripNumber
private

◆ pfxPoissonProbHotStripsVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxPoissonProbHotStripsVsStripNumber
private

◆ pfxPoissonProbVsStripNumber

std::vector<TProfile*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pfxPoissonProbVsStripNumber
private

◆ poissonProb

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::poissonProb
private

◆ poissonprob

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::poissonprob[128]
private

◆ poissonProbGoodStripsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::poissonProbGoodStripsVsStripNumber
private

◆ poissonProbHotStripsVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::poissonProbHotStripsVsStripNumber
private

◆ poissonProbVsStripNumber

std::vector<TH2F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::poissonProbVsStripNumber
private

◆ pQuality

SiStripQuality* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::pQuality
private

◆ prob_

long double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::prob_
private

◆ projXDistanceVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projXDistanceVsStripNumber
private

◆ projXNHitsGoodStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projXNHitsGoodStripsVsStripNumber
private

◆ projXNHitsHotStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projXNHitsHotStripsVsStripNumber
private

◆ projXNHitsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projXNHitsVsStripNumber
private

◆ projYDistanceVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYDistanceVsStripNumber
private

◆ projYNHitsGoodStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYNHitsGoodStripsVsStripNumber
private

◆ projYNHitsHotStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYNHitsHotStripsVsStripNumber
private

◆ projYNHitsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYNHitsVsStripNumber
private

◆ projYOccupancyGoodStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYOccupancyGoodStripsVsStripNumber
private

◆ projYOccupancyHotStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYOccupancyHotStripsVsStripNumber
private

◆ projYOccupancyVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYOccupancyVsStripNumber
private

◆ projYPoissonProbGoodStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYPoissonProbGoodStripsVsStripNumber
private

◆ projYPoissonProbHotStripsVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYPoissonProbHotStripsVsStripNumber
private

◆ projYPoissonProbVsStripNumber

std::vector<TH1F*> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::projYPoissonProbVsStripNumber
private

◆ ratio_

long double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::ratio_
private

◆ rodstringpetal

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::rodstringpetal
private

◆ singleStripOccupancy

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::singleStripOccupancy
private

◆ ss

std::stringstream SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::ss
private

◆ strip_global_position_x

float SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::strip_global_position_x
private

◆ strip_global_position_y

float SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::strip_global_position_y
private

◆ strip_global_position_z

float SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::strip_global_position_z
private

◆ strip_number

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::strip_number
private

◆ stripHits

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::stripHits
private

◆ striphits

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::striphits[128]
private

◆ stripOccupancy

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::stripOccupancy[6][128]
private

◆ stripoccupancy

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::stripoccupancy[128]
private

◆ striptree

TTree* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::striptree
private

◆ stripWeight

double SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::stripWeight[6][128]
private

◆ subdetid

int SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::subdetid
private

◆ subDetName

std::vector<std::string> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::subDetName
private

◆ TkGeom

const TrackerGeometry* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::TkGeom
private

◆ tmp

MonitorElement* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::tmp
private

◆ tmp_prof

TProfile* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::tmp_prof
private

◆ tTopo

const TrackerTopology* SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::tTopo
private

◆ UseInputDB_

bool SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::UseInputDB_
private

◆ vHotStripsInModule

std::vector<unsigned int> SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::vHotStripsInModule
private

◆ WriteDQMHistograms_

bool SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::WriteDQMHistograms_
private

◆ WriteOutputFile_

bool SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::WriteOutputFile_
private