59 #include "TObjString.h"
71 #include "TGraphAsymmErrors.h"
92 virtual void algoBeginJob();
93 virtual void algoEndJob()
override;
97 void makeHotColdMaps();
99 void totalStatistics();
101 float calcPhi(
float x,
float y);
117 vector<hit> hits[23];
119 map< unsigned int, pair< unsigned int, unsigned int> > modCounter[23];
124 int goodlayertotal[35];
125 int goodlayerfound[35];
126 int alllayertotal[35];
127 int alllayerfound[35];
133 FileInPath_(
"CalibTracker/SiStripCommon/data/SiStripDetInfo.dat")
167 CalibTree = (TTree*)(gDirectory->Get(
"traj")) ;
168 TLeaf* BadLf =
CalibTree->GetLeaf(
"ModIsBad");
169 TLeaf* sistripLf =
CalibTree->GetLeaf(
"SiStripQualBad");
171 TLeaf* acceptLf =
CalibTree->GetLeaf(
"withinAcceptance");
172 TLeaf* layerLf =
CalibTree->GetLeaf(
"layer");
173 TLeaf* nHitsLf =
CalibTree->GetLeaf(
"nHits");
174 TLeaf* xLf =
CalibTree->GetLeaf(
"TrajGlbX");
175 TLeaf* yLf =
CalibTree->GetLeaf(
"TrajGlbY");
176 TLeaf* zLf =
CalibTree->GetLeaf(
"TrajGlbZ");
177 TLeaf* ResXSigLf =
CalibTree->GetLeaf(
"ResXSig");
179 for(
int l=0;
l < 35;
l++) {
189 cout <<
"Successfully loaded analyze function with " << nevents <<
" events!\n";
190 cout <<
"A module is bad if efficiency < " <<
threshold <<
" and has at least " <<
nModsMin <<
" nModsMin." << endl;
195 unsigned int isBad = (
unsigned int)BadLf->GetValue();
196 unsigned int quality = (
unsigned int)sistripLf->GetValue();
197 unsigned int id = (
unsigned int)idLf->GetValue();
198 unsigned int accept = (
unsigned int)acceptLf->GetValue();
199 unsigned int layer = (
unsigned int)layerLf->GetValue();
200 unsigned int nHits = (
unsigned int)nHitsLf->GetValue();
201 double x = xLf->GetValue();
202 double y = yLf->GetValue();
203 double z = zLf->GetValue();
204 double resxsig = ResXSigLf->GetValue();
205 bool badquality =
false;
207 if(
_bunchx != BunchLf->GetValue())
continue;
213 if(accept != 1 || nHits < 8)
continue;
214 if(quality == 1) badquality =
true;
219 bool badflag =
false;
221 if(isBad == 1) badflag =
true;
224 if(isBad == 1 || resxsig >
_ResXSig) badflag =
true;
226 if(badflag && !badquality) {
232 hits[layer].push_back(temphit);
234 pair<unsigned int, unsigned int> newgoodpair (1,1);
235 pair<unsigned int, unsigned int> newbadpair (1,0);
237 map< unsigned int, pair< unsigned int, unsigned int> >::iterator it =
modCounter[layer].find(
id);
240 if(badflag)
modCounter[layer][id] = newbadpair;
244 ((*it).second.first)++;
245 if(!badflag) ((*it).second.second)++;
252 else if(layer > 10 && layer < 14) {
253 if( ((
id>>13)&0x3) == 1) {
257 else if( ((
id>>13)&0x3) == 2) {
262 else if(layer > 13 && layer <= 22) {
263 if( ((
id>>18)&0x3) == 1) {
267 else if( ((
id>>18)&0x3) == 2) {
278 else if(layer > 10 && layer < 14) {
279 if( ((
id>>13)&0x3) == 1) {
283 else if( ((
id>>13)&0x3) == 2) {
288 else if(layer > 13 && layer <= 22) {
289 if( ((
id>>18)&0x3) == 1) {
293 else if( ((
id>>18)&0x3) == 2) {
310 int NTkBadComponent[4];
311 int NBadComponent[4][19][4];
315 std::stringstream ssV[4][19];
317 for(
int i=0;
i<4;++
i){
318 NTkBadComponent[
i]=0;
319 for(
int j=0;
j<19;++
j){
322 NBadComponent[
i][
j][
k]=0;
329 for (
size_t i=0;
i<BC.size();++
i){
336 NTkBadComponent[0]++;
338 NTkBadComponent[1]+= ( (BC[
i].BadFibers>>2)&0x1 )+ ( (BC[
i].BadFibers>>1)&0x1 ) + ( (BC[
i].BadFibers)&0x1 );
340 NTkBadComponent[2]+= ( (BC[
i].BadApvs>>5)&0x1 )+ ( (BC[
i].BadApvs>>4)&0x1 ) + ( (BC[
i].BadApvs>>3)&0x1 ) +
341 ( (BC[
i].BadApvs>>2)&0x1 )+ ( (BC[
i].BadApvs>>1)&0x1 ) + ( (BC[
i].BadApvs)&0x1 );
393 unsigned int detid=rp->detid;
414 for(
int it=0;it<sqrange.second-sqrange.first;it++){
416 NTkBadComponent[3]+=range;
417 NBadComponent[subdet][0][3]+=range;
418 NBadComponent[subdet][component][3]+=range;
424 edm::LogError(
"SiStripQualityStatistics") <<
"PROBLEM detid " << detid <<
" value " << percentage<< std::endl;
430 cout <<
"\n-----------------\nNew IOV starting from run " << e.
id().
run() <<
" event " << e.
id().
event() <<
" lumiBlock " << e.
luminosityBlock() <<
" time " << e.
time().
value() <<
"\n-----------------\n";
431 cout <<
"\n-----------------\nGlobal Info\n-----------------";
432 cout <<
"\nBadComponent \t Modules \tFibers \tApvs\tStrips\n----------------------------------------------------------------";
433 cout <<
"\nTracker:\t\t"<<NTkBadComponent[0]<<
"\t"<<NTkBadComponent[1]<<
"\t"<<NTkBadComponent[2]<<
"\t"<<NTkBadComponent[3];
435 cout <<
"\nTIB:\t\t\t"<<NBadComponent[0][0][0]<<
"\t"<<NBadComponent[0][0][1]<<
"\t"<<NBadComponent[0][0][2]<<
"\t"<<NBadComponent[0][0][3];
436 cout <<
"\nTID:\t\t\t"<<NBadComponent[1][0][0]<<
"\t"<<NBadComponent[1][0][1]<<
"\t"<<NBadComponent[1][0][2]<<
"\t"<<NBadComponent[1][0][3];
437 cout <<
"\nTOB:\t\t\t"<<NBadComponent[2][0][0]<<
"\t"<<NBadComponent[2][0][1]<<
"\t"<<NBadComponent[2][0][2]<<
"\t"<<NBadComponent[2][0][3];
438 cout <<
"\nTEC:\t\t\t"<<NBadComponent[3][0][0]<<
"\t"<<NBadComponent[3][0][1]<<
"\t"<<NBadComponent[3][0][2]<<
"\t"<<NBadComponent[3][0][3];
441 for (
int i=1;
i<5;++
i)
442 cout <<
"\nTIB Layer " <<
i <<
" :\t\t"<<NBadComponent[0][
i][0]<<
"\t"<<NBadComponent[0][
i][1]<<
"\t"<<NBadComponent[0][
i][2]<<
"\t"<<NBadComponent[0][
i][3];
444 for (
int i=1;
i<4;++
i)
445 cout <<
"\nTID+ Disk " <<
i <<
" :\t\t"<<NBadComponent[1][
i][0]<<
"\t"<<NBadComponent[1][
i][1]<<
"\t"<<NBadComponent[1][
i][2]<<
"\t"<<NBadComponent[1][
i][3];
446 for (
int i=4;
i<7;++
i)
447 cout <<
"\nTID- Disk " <<
i-3 <<
" :\t\t"<<NBadComponent[1][
i][0]<<
"\t"<<NBadComponent[1][
i][1]<<
"\t"<<NBadComponent[1][
i][2]<<
"\t"<<NBadComponent[1][
i][3];
449 for (
int i=1;
i<7;++
i)
450 cout <<
"\nTOB Layer " <<
i <<
" :\t\t"<<NBadComponent[2][
i][0]<<
"\t"<<NBadComponent[2][
i][1]<<
"\t"<<NBadComponent[2][
i][2]<<
"\t"<<NBadComponent[2][
i][3];
452 for (
int i=1;
i<10;++
i)
453 cout <<
"\nTEC+ Disk " <<
i <<
" :\t\t"<<NBadComponent[3][
i][0]<<
"\t"<<NBadComponent[3][
i][1]<<
"\t"<<NBadComponent[3][
i][2]<<
"\t"<<NBadComponent[3][
i][3];
454 for (
int i=10;
i<19;++
i)
455 cout <<
"\nTEC- Disk " <<
i-9 <<
" :\t\t"<<NBadComponent[3][
i][0]<<
"\t"<<NBadComponent[3][
i][1]<<
"\t"<<NBadComponent[3][
i][2]<<
"\t"<<NBadComponent[3][
i][3];
458 cout <<
"\n----------------------------------------------------------------\n\t\t Detid \tModules Fibers Apvs\n----------------------------------------------------------------";
459 for (
int i=1;
i<5;++
i)
460 cout <<
"\nTIB Layer " <<
i <<
" :" << ssV[0][
i].str();
462 for (
int i=1;
i<4;++
i)
463 cout <<
"\nTID+ Disk " <<
i <<
" :" << ssV[1][
i].str();
464 for (
int i=4;
i<7;++
i)
465 cout <<
"\nTID- Disk " <<
i-3 <<
" :" << ssV[1][
i].str();
467 for (
int i=1;
i<7;++
i)
468 cout <<
"\nTOB Layer " <<
i <<
" :" << ssV[2][
i].str();
470 for (
int i=1;
i<10;++
i)
471 cout <<
"\nTEC+ Disk " <<
i <<
" :" << ssV[3][
i].str();
472 for (
int i=10;
i<19;++
i)
473 cout <<
"\nTEC- Disk " <<
i-9 <<
" :" << ssV[3][
i].str();
478 cout <<
"Entering hot cold map generation!\n";
479 TStyle* gStyle =
new TStyle(
"gStyle",
"myStyle");
481 gStyle->SetPalette(1);
482 gStyle->SetCanvasColor(kWhite);
483 gStyle->SetOptStat(0);
488 for(Long_t maplayer = 1; maplayer <=22; maplayer++) {
490 if(maplayer > 0 && maplayer <= 4) {
492 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TIB",(
int)(maplayer)),
"TIB",100,-1,361,100,-100,100);
493 temph2->GetXaxis()->SetTitle(
"Phi");
494 temph2->GetXaxis()->SetBinLabel(1,TString(
"360"));
495 temph2->GetXaxis()->SetBinLabel(50,TString(
"180"));
496 temph2->GetXaxis()->SetBinLabel(100,TString(
"0"));
497 temph2->GetYaxis()->SetTitle(
"Global Z");
498 temph2->SetOption(
"colz");
501 else if(maplayer > 4 && maplayer <= 10) {
503 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TOB",(
int)(maplayer-4)),
"TOB",100,-1,361,100,-120,120);
504 temph2->GetXaxis()->SetTitle(
"Phi");
505 temph2->GetXaxis()->SetBinLabel(1,TString(
"360"));
506 temph2->GetXaxis()->SetBinLabel(50,TString(
"180"));
507 temph2->GetXaxis()->SetBinLabel(100,TString(
"0"));
508 temph2->GetYaxis()->SetTitle(
"Global Z");
509 temph2->SetOption(
"colz");
512 else if(maplayer > 10 && maplayer <= 13) {
515 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TID-",(
int)(maplayer-10)),
"TID-",100,-100,100,100,-100,100);
516 temph2->GetXaxis()->SetTitle(
"Global Y");
517 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
518 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
519 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
520 temph2->GetYaxis()->SetTitle(
"Global X");
521 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
522 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
523 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
524 temph2->SetOption(
"colz");
526 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TID+",(
int)(maplayer-10)),
"TID+",100,-100,100,100,-100,100);
527 temph2->GetXaxis()->SetTitle(
"Global Y");
528 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
529 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
530 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
531 temph2->GetYaxis()->SetTitle(
"Global X");
532 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
533 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
534 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
535 temph2->SetOption(
"colz");
538 else if(maplayer > 13) {
541 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TEC-",(
int)(maplayer-13)),
"TEC-",100,-120,120,100,-120,120);
542 temph2->GetXaxis()->SetTitle(
"Global Y");
543 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
544 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
545 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
546 temph2->GetYaxis()->SetTitle(
"Global X");
547 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
548 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
549 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
550 temph2->SetOption(
"colz");
552 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TEC+",(
int)(maplayer-13)),
"TEC+",100,-120,120,100,-120,120);
553 temph2->GetXaxis()->SetTitle(
"Global Y");
554 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
555 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
556 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
557 temph2->GetYaxis()->SetTitle(
"Global X");
558 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
559 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
560 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
561 temph2->SetOption(
"colz");
565 for(Long_t mylayer = 1; mylayer <= 22; mylayer++) {
569 vector<hit>::const_iterator iter;
570 for(iter =
hits[mylayer].
begin(); iter !=
hits[mylayer].end(); iter++) {
574 if(mylayer > 0 && mylayer <= 4) {
577 HotColdMaps[mylayer - 1]->Fill(360.-phi,iter->z,1.);
579 else if(mylayer > 4 && mylayer <= 10) {
582 HotColdMaps[mylayer - 1]->Fill(360.-phi,iter->z,1.);
584 else if(mylayer > 10 && mylayer <= 13) {
587 int side = (((iter->id)>>13) & 0x3);
588 if(side == 1)
HotColdMaps[(mylayer - 1) + (mylayer - 11)]->Fill(-iter->y,iter->x,1.);
589 else if(side == 2)
HotColdMaps[(mylayer - 1) + (mylayer - 10)]->Fill(-iter->y,iter->x,1.);
593 else if(mylayer > 13) {
596 int side = (((iter->id)>>18) & 0x3);
597 if(side == 1)
HotColdMaps[(mylayer + 2) + (mylayer - 14)]->Fill(-iter->y,iter->x,1.);
598 else if(side == 2)
HotColdMaps[(mylayer + 2) + (mylayer - 13)]->Fill(-iter->y,iter->x,1.);
604 cout <<
"Finished HotCold Map Generation\n";
608 cout <<
"Entering TKMap generation!\n";
611 for(Long_t
i = 1;
i <= 22;
i++) {
616 map<unsigned int, pair<unsigned int, unsigned int> >::const_iterator ih;
620 double myeff = (double)(((*ih).second).second)/(((*ih).second).first);
625 cout <<
"Layer " <<
i <<
" module " << (*ih).first <<
" efficiency " << myeff <<
" " << (((*ih).second).
second) <<
"/" << (((*ih).second).
first) << endl;
631 if((((*ih).second).first) < 100 ) {
632 cout <<
"Module " << (*ih).first <<
" layer " <<
i <<
" is under occupancy at " << (((*ih).second).
first) << endl;
646 tkmap->
save(
true, 0, 0,
"SiStripHitEffTKMap.png");
647 tkmapbad->
save(
true, 0, 0,
"SiStripHitEffTKMapBad.png");
648 cout <<
"Finished TKMap Generation\n";
653 cout <<
"Entering SQLite file generation!\n";
654 std::vector<unsigned int> BadStripList;
655 unsigned short NStrips;
661 map< unsigned int, double >::const_iterator it;
666 cout <<
"Number of strips module " << (*it).first <<
" is " << NStrips << endl;
667 BadStripList.push_back(pQuality->
encode(0,NStrips,0));
669 id1=(
unsigned int)(*it).first;
670 cout <<
"ID1 shoudl match list of modules above " << id1 << endl;
674 BadStripList.clear();
685 for(Long_t
i=1;
i<=22;
i++) {
691 cout <<
"The total efficiency is " << double(totalfound)/double(totaltotal) << endl;
699 TH1F *
found =
fs->
make<TH1F>(
"found",
"found",nLayers+1,0,nLayers+1);
700 TH1F *
all =
fs->
make<TH1F>(
"all",
"all",nLayers+1,0,nLayers+1);
701 TH1F *found2 =
fs->
make<TH1F>(
"found2",
"found2",nLayers+1,0,nLayers+1);
702 TH1F *all2 =
fs->
make<TH1F>(
"all2",
"all2",nLayers+1,0,nLayers+1);
704 found->SetBinContent(0,-1);
705 all->SetBinContent(0,1);
707 TCanvas *c7 =
new TCanvas(
"c7",
" test ",10,10,800,600);
711 for (Long_t
i=1;
i< nLayers+1; ++
i) {
721 found->SetBinContent(
i,0);
722 all->SetBinContent(
i,10);
730 found2->SetBinContent(
i,0);
731 all2->SetBinContent(
i,10);
742 TGraphAsymmErrors *gr =
new TGraphAsymmErrors(nLayers+1);
743 gr->BayesDivide(found,all);
745 TGraphAsymmErrors *gr2 =
new TGraphAsymmErrors(nLayers+1);
746 gr2->BayesDivide(found2,all2);
748 for(
int j = 0;
j<nLayers+1;
j++){
749 gr->SetPointError(
j, 0., 0., gr->GetErrorYlow(
j),gr->GetErrorYhigh(
j) );
750 gr2->SetPointError(
j, 0., 0., gr2->GetErrorYlow(
j),gr2->GetErrorYhigh(
j) );
753 gr->GetXaxis()->SetLimits(0,nLayers);
754 gr->SetMarkerColor(2);
755 gr->SetMarkerSize(1.2);
758 gr->SetMarkerStyle(20);
759 gr->SetMinimum(0.90);
760 gr->SetMaximum(1.001);
761 gr->GetYaxis()->SetTitle(
"Efficiency");
763 gr2->GetXaxis()->SetLimits(0,nLayers);
764 gr2->SetMarkerColor(1);
765 gr2->SetMarkerSize(1.2);
766 gr2->SetLineColor(1);
767 gr2->SetLineWidth(4);
768 gr2->SetMarkerStyle(21);
769 gr2->SetMinimum(0.90);
770 gr2->SetMaximum(1.001);
771 gr2->GetYaxis()->SetTitle(
"Efficiency");
774 for ( Long_t
k=1;
k<nLayers+1;
k++) {
780 label = TString(
"TIB ") +
k;
781 }
else if (
k>4&&
k<11) {
782 label = TString(
"TOB ")+(
k-4);
783 }
else if (
k>10&&
k<14) {
784 label = TString(
"TID- ")+(
k-10);
785 }
else if (
k>13&&
k<17) {
786 label = TString(
"TID+ ")+(
k-13);
787 }
else if (
k>16&&
k<26) {
788 label = TString(
"TEC- ")+(
k-16);
790 label = TString(
"TEC+ ")+(
k-25);
792 gr->GetXaxis()->SetBinLabel(((
k+1)*100)/(nLayers)-2,label);
793 gr2->GetXaxis()->SetBinLabel(((
k+1)*100)/(nLayers)-2,label);
797 gr->GetXaxis()->SetNdivisions(36);
800 TPad *overlay =
new TPad(
"overlay",
"",0,0,1,1);
801 overlay->SetFillStyle(4000);
802 overlay->SetFillColor(0);
803 overlay->SetFrameFillStyle(4000);
804 overlay->Draw(
"same");
808 TLegend *
leg =
new TLegend(0.70,0.20,0.92,0.39);
809 leg->AddEntry(gr,
"Good Modules",
"p");
810 leg->AddEntry(gr2,
"All Modules",
"p");
811 leg->SetTextSize(0.020);
812 leg->SetFillColor(0);
815 c7->SaveAs(
"Summary.png");
826 for(;rIter!=rIterEnd;++rIter){
828 if ( ! obj->
put(rIter->detid,range) )
829 edm::LogError(
"SiStripHitEffFromCalibTree")<<
"[SiStripHitEffFromCalibTree::getNewObject] detid already exists"<<std::endl;
838 if((x>=0)&&(y>=0)) phi = atan(y/x);
839 else if((x>=0)&&(y<=0)) phi = atan(y/x) + 2*
Pi;
840 else if((x<=0)&&(y>=0)) phi = atan(y/x) +
Pi;
841 else phi = atan(y/x) +
Pi;
851 ssV[
i][component] <<
"\n\t\t "
856 ssV[
i][component] <<
"x " <<( (BC.
BadFibers>>1)&0x1 );
859 ssV[
i][component] << ( (BC.
BadFibers>>1)&0x1 ) <<
" "
861 ssV[
i][component] <<
" \t "
863 << ( (BC.
BadApvs>>1)&0x1 ) <<
" ";
865 ssV[
i][component] <<
"x x " << ( (BC.
BadApvs>>2)&0x1 ) <<
" "
868 ssV[
i][component] << ( (BC.
BadApvs>>2)&0x1 ) <<
" "
869 << ( (BC.
BadApvs>>3)&0x1 ) <<
" "
870 << ( (BC.
BadApvs>>4)&0x1 ) <<
" "
871 << ( (BC.
BadApvs>>5)&0x1 ) <<
" ";
876 NBadComponent[
i][component][2]+= ( (BC.
BadApvs>>5)&0x1 )+ ( (BC.
BadApvs>>4)&0x1 ) + ( (BC.
BadApvs>>3)&0x1 ) +
884 NBadComponent[
i][0][0]++;
885 NBadComponent[
i][component][0]++;
vector< TH2F * > HotColdMaps
TString CalibTreeFilename
T getParameter(std::string const &) const
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
const std::vector< BadComponent > & getBadComponentList() const
unsigned int tibLayer(const DetId &id) const
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
#define DEFINE_FWK_MODULE(type)
edm::LuminosityBlockNumber_t luminosityBlock() const
unsigned int tidWheel(const DetId &id) const
T * make(const Args &...args) const
make new ROOT object
~SiStripHitEffFromCalibTree()
void SetBadComponents(int i, int component, SiStripQuality::BadComponent &BC, std::stringstream ssV[4][19], int NBadComponent[4][19][4])
Registry::const_iterator RegistryIterator
SiStripDetInfoFileReader * reader
SiStripQuality * quality_
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
U second(std::pair< T, U > const &p)
T x() const
Cartesian x coordinate.
float calcPhi(float x, float y)
RegistryIterator getRegistryVectorEnd() const
edm::Service< TFileService > fs
unsigned int tidSide(const DetId &id) const
virtual void algoBeginJob()
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
void compact(unsigned int &, std::vector< unsigned int > &)
edm::FileInPath FileInPath_
SiStripBadStrip * getNewObject() override
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
map< unsigned int, pair< unsigned int, unsigned int > > modCounter[23]
void fillc(int idmod, int RGBcode)
ContainerIterator getDataVectorBegin() const
tuple SiStripDetInfoFileReader
Detector identifier class for the strip tracker.
virtual void algoEndJob() override
T const * product() const
RegistryIterator getRegistryVectorBegin() const
virtual void algoAnalyze(const edm::Event &e, const edm::EventSetup &c) override
std::pair< ContainerIterator, ContainerIterator > Range
map< unsigned int, double > BadModules
std::string fullPath() const
bool put(const uint32_t &detID, const InputVector &vect)
unsigned int tecWheel(const DetId &id) const
unsigned int encode(const unsigned short &first, const unsigned short &NconsecutiveBadStrips, const unsigned short &flag=0)
TimeValue_t value() const
SiStripHitEffFromCalibTree(const edm::ParameterSet &)
edm::Timestamp time() const
void fill(int layer, int ring, int nmod, float x)
data decode(const unsigned int &value) const
unsigned int tobLayer(const DetId &id) const
unsigned int tecSide(const DetId &id) const