20 absolute_occupancy_(0),
21 OutFileName_(
"Occupancy.root"),
22 DQMOutfileName_(
"DQMOutput"),
23 UseInputDB_(iConfig.getUntrackedParameter<bool>(
"UseInputDB",
false)),
30 LogTrace(
"SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy")<<
"[SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::~SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy] "<<std::endl;
35 LogTrace(
"SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy")<<
"[SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy::extractBadAPVs] "<<std::endl;
42 apvtree =
new TTree(
"moduleOccupancy",
"tree");
63 striptree =
new TTree(
"stripOccupancy",
"tree");
91 HistoMap::iterator it=DM.begin();
92 HistoMap::iterator itEnd=DM.end();
93 std::vector<unsigned int> badStripList;
95 for (;it!=itEnd;++it){
99 for (
int apv=0; apv<6; apv++)
106 for (
int strip=0; strip<128; strip++)
119 APV.
th1f[apv] =
new TH1F(
"tmp",
"tmp",128,0.5,128.5);
120 int NumberEntriesPerAPV=0;
122 for (
int strip=0; strip<128; strip++)
124 stripOccupancy[apv][strip] = (it->second.get())->GetBinContent((apv*128)+strip+1);
127 APV.
th1f[apv]->SetBinContent(strip+1,(it->second.get())->GetBinContent((apv*128)+strip+1));
128 NumberEntriesPerAPV += (int)(it->second.get())->GetBinContent((apv*128)+strip+1);
131 APV.
th1f[apv]->SetEntries(NumberEntriesPerAPV);
144 LogTrace(
"SiStripBadAPV") <<
"Analyzing detid " << detid<< std::endl;
233 std::cout <<
"### Detector does not belong to TIB, TID, TOB or TEC !? ###" << std::endl;
280 badStripList.
clear();
365 LogTrace(
"SiStripBadAPV") <<
ss.str() << std::endl;
371 Double_t tot[7], tot2[7];
374 Double_t
Mean[7] = {0};
375 Double_t Rms[7] = {1000,1000,1000,1000,1000,1000,1000};
379 for (
int i=0;
i<number_iterations;
i++)
381 for (
int j=0;
j<7;
j++)
388 for (uint32_t it=0; it<a.size(); it++)
390 Moduleposition = (a[it].modulePosition)-1;
392 for (
int apv=0; apv<a[it].numberApvs; apv++)
396 if (a[it].apvMedian[apv]<(Mean[Moduleposition]-3*Rms[Moduleposition]) || (a[it].apvMedian[apv]>(Mean[Moduleposition]+5*Rms[Moduleposition])))
401 tot[Moduleposition] += a[it].apvMedian[apv];
402 tot2[Moduleposition] += (a[it].apvMedian[apv])*(a[it].apvMedian[apv]);
407 for (
int j=0;
j<7;
j++)
411 Mean[
j] = tot[
j]/n[
j];
417 for (
int j=0;
j<7;
j++)
419 MeanRMS[
j] = std::make_pair(Mean[
j],Rms[j]);
429 for (uint32_t it=0; it<medianValues.size(); it++)
431 Moduleposition = (medianValues[it].modulePosition)-1;
432 Detid = medianValues[it].detrawId;
444 for (
int apv=0; apv<medianValues[it].numberApvs; apv++)
446 double logMedianOccupancy = -1;
447 double logAbsoluteOccupancy = -1;
449 for (
int i=0;
i<128;
i++)
475 unsigned int layer = 0;
496 if(InSiStripQuality->IsApvBad(Detid,apv) )
501 for (
int strip=0; strip<128; strip++)
537 else if(iVec==vHotStripsInModule.size()-1)
539 distance = vHotStripsInModule[vHotStripsInModule.size()-1] - vHotStripsInModule[vHotStripsInModule.size() -2];
541 else if(vHotStripsInModule.size()>2)
543 distanceR = vHotStripsInModule[iVec + 1] - vHotStripsInModule[iVec];
544 distanceL = vHotStripsInModule[iVec] - vHotStripsInModule[iVec - 1];
549 std::cout <<
"ERROR! distance is never computed!!!\n";
569 else if (medianValues[it].apvMedian[apv]<(MeanAndRms[Moduleposition].
first-
lowoccupancy_*MeanAndRms[Moduleposition].
second) && (MeanAndRms[Moduleposition].first>2 || medianValues[it].apvabsoluteOccupancy[apv]==0))
583 for (
int strip=0; strip<128; strip++)
618 else if(iVec==vHotStripsInModule.size()-1)
620 distance = vHotStripsInModule[vHotStripsInModule.size()-1] - vHotStripsInModule[vHotStripsInModule.size() -2];
622 else if(vHotStripsInModule.size()>2)
624 distanceR = vHotStripsInModule[iVec + 1] - vHotStripsInModule[iVec];
625 distanceL = vHotStripsInModule[iVec] - vHotStripsInModule[iVec - 1];
630 std::cout <<
"ERROR! distance is never computed!!!\n";
639 if (BadStripList.begin()!=BadStripList.end())
641 quality->
compact(Detid,BadStripList);
643 quality->
put(Detid,range);
645 BadStripList.clear();
653 size_t startingSize=vect.size();
656 size_t Nbins = histo.
th1f[apv]->GetNbinsX();
657 size_t ibinStart = 1;
658 size_t ibinStop = Nbins+1;
659 int MaxEntry = (int)histo.
th1f[apv]->GetMaximum();
661 std::vector<long double> vPoissonProbs(MaxEntry+1,0);
666 unsigned int goodstripentries[128];
668 for (
size_t i=ibinStart;
i<ibinStop; ++
i){
669 if (
ishot[(apv*128)+
i-1]==0){
670 goodstripentries[nGoodStrips] = (
unsigned int)histo.
th1f[apv]->GetBinContent(
i);
674 double median = TMath::Median(nGoodStrips,goodstripentries);
676 for (
size_t i=ibinStart;
i<ibinStop; ++
i){
677 unsigned int entries= (
unsigned int)histo.
th1f[apv]->GetBinContent(
i);
689 if(diff<vPoissonProbs[entries]){
693 histo.
th1f[apv]->SetBinContent(
i,0.);
697 LogTrace(
"SiStripHotStrip")<<
" rejecting strip " << (apv*128)+
i-1 <<
" value " << entries <<
" diff " << diff <<
" prob " << vPoissonProbs[entries]<< std::endl;
703 LogTrace(
"SiStripHotStrip") <<
" [SiStripHotStripAlgorithmFromClusterOccupancy::iterativeSearch] Nbins="<< Nbins <<
" MaxEntry="<<MaxEntry <<
" meanVal=" << meanVal <<
" NEmptyBins="<<histo.
NEmptyBins[apv]<<
" NEntries=" << histo.
NEntries[apv] <<
" thEntries " << histo.
th1f[apv]->GetEntries()<<
" startingSize " << startingSize <<
" vector.size " << vect.size() << std::endl;
705 if (vect.size()!=startingSize)
710 for(
size_t i=0;
i<vPoissonProbs.size();++
i){
711 vPoissonProbs[
i]= (
i==0)?TMath::Poisson(
i,meanVal):vPoissonProbs[
i-1]+TMath::Poisson(
i,meanVal);
779 std::cout <<
"### Detector does not belong to TIB, TID, TOB or TEC !? ###" << std::endl;
780 std::cout <<
"### DetRawId: " << detid <<
" ###" << std::endl;
807 histoName =
"distanceVsStripNumber" +
subDetName[
i];
808 histoTitle =
"Distance between hot strips vs. strip number";
811 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 999, 0.5, 999.5);
814 histoName =
"pfxDistanceVsStripNumber" +
subDetName[
i];
815 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
821 histoName =
"projXDistanceVsStripNumber" +
subDetName[
i];
822 histoTitle =
"Number of hot strips vs. strip number";
830 histoName =
"projYDistanceVsStripNumber" +
subDetName[
i];
831 histoTitle =
"Distribution of distance between hot strips";
840 histoName =
"occupancyVsStripNumber" +
subDetName[
i];
841 histoTitle =
"Occupancy of strips vs. strip number";
844 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -8.,0.);
847 histoName =
"pfxOccupancyVsStripNumber" +
subDetName[
i];
848 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
854 histoName =
"projYOccupancyVsStripNumber" +
subDetName[
i];
855 histoTitle =
"Distribution of strip occupancy";
864 histoName =
"occupancyHotStripsVsStripNumber" +
subDetName[
i];
865 histoTitle =
"Occupancy of hot strips vs. strip number";
868 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -8., 0.);
871 histoName =
"pfxOccupancyHotStripsVsStripNumber" +
subDetName[
i];
872 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
878 histoName =
"projYOccupancyHotStripsVsStripNumber" +
subDetName[
i];
879 histoTitle =
"Distribution of hot strip occupancy";
888 histoName =
"occupancyGoodStripsVsStripNumber" +
subDetName[
i];
889 histoTitle =
"Occupancy of good strips vs. strip number";
892 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -8., 0.);
895 histoName =
"pfxOccupancyGoodStripsVsStripNumber" +
subDetName[
i];
896 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
902 histoName =
"projYOccupancyGoodStripsVsStripNumber" +
subDetName[
i];
903 histoTitle =
"Distribution of good strip occupancy";
912 histoName =
"poissonProbVsStripNumber" +
subDetName[
i];
913 histoTitle =
"Poisson probability of strips vs. strip number";
916 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -18., 0.);
919 histoName =
"pfxPoissonProbVsStripNumber" +
subDetName[
i];
920 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
926 histoName =
"projYPoissonProbVsStripNumber" +
subDetName[
i];
927 histoTitle =
"Distribution of strip Poisson probability";
936 histoName =
"poissonProbHotStripsVsStripNumber" +
subDetName[
i];
937 histoTitle =
"Poisson probability of hot strips vs. strip number";
940 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -18., 0.);
943 histoName =
"pfxPoissonProbHotStripsVsStripNumber" +
subDetName[
i];
944 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
950 histoName =
"projYPoissonProbHotStripsVsStripNumber" +
subDetName[
i];
951 histoTitle =
"Distribution of hot strip Poisson probability";
960 histoName =
"poissonProbGoodStripsVsStripNumber" +
subDetName[
i];
961 histoTitle =
"Poisson probability of good strips vs. strip number";
964 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 1000, -18., 0.);
967 histoName =
"pfxPoissonProbGoodStripsVsStripNumber" +
subDetName[
i];
968 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
974 histoName =
"projYPoissonProbGoodStripsVsStripNumber" +
subDetName[
i];
975 histoTitle =
"Distribution of good strip Poisson probability";
985 histoTitle =
"NHits in strips vs. strip number";
988 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 10000, -0.5, 9999.5);
991 histoName =
"pfxNHitsVsStripNumber" +
subDetName[
i];
992 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
996 histoName =
"projXNHitsVsStripNumber" +
subDetName[
i];
997 histoTitle =
"Cumulative nHits in strips vs. strip number";
1003 histoName =
"projYNHitsVsStripNumber" +
subDetName[
i];
1004 histoTitle =
"Distribution of nHits for all strips";
1007 tmp =
dqmStore->
book1D(histoName.c_str(), histoTitle.c_str(), 10000, -0.5, 9999.5);
1013 histoName =
"nHitsHotStripsVsStripNumber" +
subDetName[
i];
1014 histoTitle =
"NHits in hot strips vs. strip number";
1017 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 10000, -0.5, 9999.5);
1020 histoName =
"pfxNHitsHotStripsVsStripNumber" +
subDetName[
i];
1021 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1025 histoName =
"projXNHitsHotStripsVsStripNumber" +
subDetName[
i];
1026 histoTitle =
"Cumulative nHits in hot strips vs. strip number";
1032 histoName =
"projYNHitsHotStripsVsStripNumber" +
subDetName[
i];
1033 histoTitle =
"Distribution of nHits for hot strips";
1036 tmp =
dqmStore->
book1D(histoName.c_str(), histoTitle.c_str(), 10000, -0.5, 9999.5);
1042 histoName =
"nHitsGoodStripsVsStripNumber" +
subDetName[
i];
1043 histoTitle =
"NHits in good strips vs. strip number";
1046 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5, 10000, -0.5, 9999.5);
1049 histoName =
"pfxNHitsGoodStripsVsStripNumber" +
subDetName[
i];
1050 tmp_prof =
new TProfile(histoName.c_str(), histoTitle.c_str(), 768, 0.5, 768.5);
1054 histoName =
"projXNHitsGoodStripsVsStripNumber" +
subDetName[
i];
1055 histoTitle =
"Cumulative nHits in good strips vs. strip number";
1061 histoName =
"projYNHitsGoodStripsVsStripNumber" +
subDetName[
i];
1062 histoTitle =
"Distribution of nHits for good strips";
1065 tmp =
dqmStore->
book1D(histoName.c_str(), histoTitle.c_str(), 10000, -0.5, 9999.5);
1072 histoName =
"medianVsAbsoluteOccupancy" +
subDetName[
i];
1079 histoTitle =
"Median APV occupancy vs. absolute APV occupancy";
1086 tmp =
dqmStore->
book2D(histoName.c_str(), histoTitle.c_str(), 1000, 0., 6., 1000, -1., 3.);
1099 histoTitle =
"Median APV occupancy";
1118 histoTitle =
"Absolute APV occupancy";
1135 double logStripOccupancy = -1;
1136 double logPoissonProb = -1;
std::vector< TH1F * > projXNHitsGoodStripsVsStripNumber
std::pair< double, double > MeanAndRms_TIDMinus_Disc3[7]
std::pair< double, double > MeanAndRms_TECPlus_Disc2[7]
std::vector< Apv > medianValues_TECMinus_Disc3
std::vector< Apv > medianValues_TECMinus_Disc4
void setBasicTreeParameters(int detid)
std::vector< TProfile * > pfxPoissonProbGoodStripsVsStripNumber
float strip_global_position_z
std::vector< std::string > subDetName
std::pair< double, double > MeanAndRms_TIDMinus_Disc1[7]
std::vector< Apv > medianValues_TECPlus_Disc8
unsigned short MinNumEntries_
unsigned int tibLayer(const DetId &id) const
unsigned int tibString(const DetId &id) const
std::pair< double, double > MeanAndRms_TECPlus_Disc4[7]
unsigned int tidRing(const DetId &id) const
std::vector< Apv > medianValues_TECPlus_Disc7
std::pair< double, double > MeanAndRms_TECMinus_Disc5[7]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
bool tobIsStereo(const DetId &id) const
void cd(void)
go to top directory (ie. root)
std::vector< Apv > medianValues_TIDMinus_Disc2
std::vector< TH2F * > distanceVsStripNumber
const TrackerGeometry * TkGeom
unsigned int tecRing(const DetId &id) const
ring id
std::vector< TH1F * > projXNHitsHotStripsVsStripNumber
std::vector< Apv > medianValues_TOB_Layer2
std::vector< TProfile * > pfxNHitsHotStripsVsStripNumber
std::vector< Apv > medianValues_TECPlus_Disc6
std::pair< double, double > MeanAndRms_TECPlus_Disc7[7]
std::vector< Apv > medianValues_TOB_Layer5
std::pair< double, double > MeanAndRms_TECPlus_Disc5[7]
std::vector< TProfile * > pfxNHitsGoodStripsVsStripNumber
std::vector< Apv > medianValues_TECPlus_Disc1
unsigned int tidWheel(const DetId &id) const
std::pair< double, double > MeanAndRms_TECMinus_Disc1[7]
std::vector< Apv > medianValues_TECPlus_Disc2
std::vector< TProfile * > pfxDistanceVsStripNumber
void CalculateMeanAndRMS(const std::vector< Apv > &, std::pair< double, double > *, int)
void initializeDQMHistograms()
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
std::vector< TH1F * > projXNHitsVsStripNumber
std::vector< Apv > medianValues_TIB_Layer2
std::vector< Apv > medianValues_TOB_Layer6
std::vector< TH2F * > poissonProbGoodStripsVsStripNumber
bool tecIsZMinusSide(const DetId &id) const
std::vector< unsigned int > nLayers
std::vector< Apv > medianValues_TECMinus_Disc1
bool tidIsStereo(const DetId &id) const
long double absolute_occupancy_
double singleStripOccupancy
std::vector< TH1F * > projYOccupancyHotStripsVsStripNumber
std::vector< Apv > medianValues_TECMinus_Disc5
bool tidIsZMinusSide(const DetId &id) const
U second(std::pair< T, U > const &p)
std::vector< TH1F * > projYPoissonProbGoodStripsVsStripNumber
std::vector< TH1F * > projYNHitsGoodStripsVsStripNumber
bool tecIsStereo(const DetId &id) const
std::vector< Apv > medianValues_TIDMinus_Disc3
std::vector< TProfile * > pfxOccupancyGoodStripsVsStripNumber
bool tibIsExternalString(const DetId &id) const
std::vector< Apv > medianValues_TECPlus_Disc4
std::vector< std::string > layerName
bool tibIsZMinusSide(const DetId &id) const
std::vector< TH1F * > projYOccupancyVsStripNumber
std::vector< Apv > medianValues_TIDMinus_Disc1
void fillStripDQMHistograms()
std::vector< Apv > medianValues_TECMinus_Disc6
std::vector< TProfile * > pfxPoissonProbHotStripsVsStripNumber
std::vector< TH1F * > projYOccupancyGoodStripsVsStripNumber
std::vector< TH2F * > poissonProbHotStripsVsStripNumber
std::vector< TH2F * > occupancyHotStripsVsStripNumber
std::pair< double, double > MeanAndRms_TOB_Layer5[7]
unsigned int tidModule(const DetId &id) const
std::vector< Apv > medianValues_TECMinus_Disc8
std::vector< Apv > medianValues_TECMinus_Disc7
bool tidIsBackRing(const DetId &id) const
void compact(unsigned int &, std::vector< unsigned int > &)
std::pair< double, double > MeanAndRms_TOB_Layer3[7]
bool tobIsZMinusSide(const DetId &id) const
std::vector< TH1F * > projXDistanceVsStripNumber
std::string DQMOutfileName_
std::pair< double, double > MeanAndRms_TIB_Layer3[7]
std::vector< Apv > medianValues_TECMinus_Disc2
std::vector< Apv > medianValues_TIDPlus_Disc3
double stripOccupancy[6][128]
float strip_global_position_x
unsigned short MinNumEntriesPerStrip_
std::vector< Apv > medianValues_TIB_Layer4
double stripWeight[6][128]
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
virtual ~SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy()
std::vector< Apv > medianValues_TIDPlus_Disc2
SiStripBadAPVandHotStripAlgorithmFromClusterOccupancy(const edm::ParameterSet &, const TrackerTopology *)
std::pair< double, double > MeanAndRms_TECMinus_Disc4[7]
std::vector< TH1F * > projYNHitsHotStripsVsStripNumber
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
long double lowoccupancy_
std::pair< double, double > MeanAndRms_TIB_Layer1[7]
SiStrip::QualityHistosMap HistoMap
std::vector< TH1F * > projYNHitsVsStripNumber
std::pair< double, double > MeanAndRms_TECMinus_Disc8[7]
unsigned int tibModule(const DetId &id) const
unsigned int tecModule(const DetId &id) const
std::vector< Apv > medianValues_TOB_Layer1
std::vector< Apv > medianValues_TIDPlus_Disc1
std::pair< double, double > MeanAndRms_TOB_Layer4[7]
bool tecIsBackPetal(const DetId &id) const
std::vector< TProfile * > pfxPoissonProbVsStripNumber
std::pair< double, double > MeanAndRms_TECMinus_Disc9[7]
std::pair< double, double > MeanAndRms_TECMinus_Disc3[7]
std::vector< TH2F * > nHitsHotStripsVsStripNumber
std::vector< TH2F * > occupancyGoodStripsVsStripNumber
std::pair< double, double > MeanAndRms_TIB_Layer2[7]
std::pair< double, double > MeanAndRms_TOB_Layer2[7]
std::pair< double, double > MeanAndRms_TIDPlus_Disc1[7]
std::pair< double, double > MeanAndRms_TOB_Layer6[7]
void iterativeSearch(Apv &, std::vector< unsigned int > &, int)
bool tibIsStereo(const DetId &id) const
TH1F * medianOccupancy[5][10]
TH1F * getTH1F(void) const
std::pair< double, double > MeanAndRms_TECMinus_Disc6[7]
void AnalyzeOccupancy(SiStripQuality *, std::vector< Apv > &, std::pair< double, double > *, std::vector< unsigned int > &, edm::ESHandle< SiStripQuality > &)
TH1F * absoluteOccupancy[5][10]
std::vector< TH2F * > occupancyVsStripNumber
std::vector< TH1F * > projYPoissonProbHotStripsVsStripNumber
unsigned int tobModule(const DetId &id) const
const TrackerTopology * tTopo
std::vector< TH1F * > projYPoissonProbVsStripNumber
std::vector< TProfile * > pfxNHitsVsStripNumber
TH2F * medianVsAbsoluteOccupancy[5][10]
long double highoccupancy_
SiStripQuality * pQuality
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, const uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE", const bool resetMEsAfterWriting=false)
TProfile * getTProfile(void) const
std::pair< ContainerIterator, ContainerIterator > Range
std::pair< double, double > MeanAndRms_TECMinus_Disc2[7]
std::pair< double, double > MeanAndRms_TECPlus_Disc6[7]
std::pair< double, double > MeanAndRms_TIDMinus_Disc2[7]
virtual LocalPoint localPosition(float strip) const =0
unsigned int tecPetalNumber(const DetId &id) const
std::pair< double, double > MeanAndRms_TIB_Layer4[7]
std::pair< double, double > MeanAndRms_TECPlus_Disc9[7]
void extractBadAPVSandStrips(SiStripQuality *, HistoMap &, edm::ESHandle< SiStripQuality > &)
std::vector< Apv > medianValues_TIB_Layer3
double apvMedianOccupancy
std::pair< double, double > MeanAndRms_TECPlus_Disc3[7]
volatile std::atomic< bool > shutdown_flag false
std::vector< Apv > medianValues_TECPlus_Disc3
std::vector< TH2F * > nHitsGoodStripsVsStripNumber
std::vector< TProfile * > pfxOccupancyVsStripNumber
std::vector< Apv > medianValues_TECPlus_Disc5
std::vector< unsigned int > vHotStripsInModule
unsigned int tobRod(const DetId &id) const
std::vector< TH1F * > projYDistanceVsStripNumber
TH2F * getTH2F(void) const
std::vector< TProfile * > pfxOccupancyHotStripsVsStripNumber
bool put(const uint32_t &detID, const InputVector &vect)
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
std::pair< double, double > MeanAndRms_TIDPlus_Disc3[7]
std::vector< Apv > medianValues_TECMinus_Disc9
unsigned int tecWheel(const DetId &id) const
std::vector< TH2F * > poissonProbVsStripNumber
std::vector< Apv > medianValues_TOB_Layer3
std::vector< Apv > medianValues_TIB_Layer1
unsigned int encode(const unsigned short &first, const unsigned short &NconsecutiveBadStrips, const unsigned short &flag=0)
std::pair< double, double > MeanAndRms_TIDPlus_Disc2[7]
void evaluatePoissonian(std::vector< long double > &, long double &meanVal)
std::pair< double, double > MeanAndRms_TOB_Layer1[7]
std::vector< Apv > medianValues_TOB_Layer4
void setCurrentFolder(const std::string &fullpath)
std::pair< double, double > MeanAndRms_TECPlus_Disc1[7]
unsigned int tobLayer(const DetId &id) const
std::pair< double, double > MeanAndRms_TECMinus_Disc7[7]
std::vector< TH2F * > nHitsVsStripNumber
virtual const TrackerGeomDet * idToDet(DetId) const
float strip_global_position_y
std::pair< double, double > MeanAndRms_TECPlus_Disc8[7]
std::vector< Apv > medianValues_TECPlus_Disc9
int apvabsoluteOccupancy[6]
double stripoccupancy[128]