65 #include "TObjString.h"
77 #include "TGraphAsymmErrors.h"
98 virtual void algoBeginJob();
99 virtual void algoEndJob()
override;
103 void makeHotColdMaps();
105 void totalStatistics();
107 float calcPhi(
float x,
float y);
123 vector<hit> hits[23];
125 map< unsigned int, pair< unsigned int, unsigned int> > modCounter[23];
130 int goodlayertotal[35];
131 int goodlayerfound[35];
132 int alllayertotal[35];
133 int alllayerfound[35];
139 FileInPath_(
"CalibTracker/SiStripCommon/data/SiStripDetInfo.dat")
173 CalibTree = (TTree*)(gDirectory->Get(
"traj")) ;
174 TLeaf* BadLf =
CalibTree->GetLeaf(
"ModIsBad");
175 TLeaf* sistripLf =
CalibTree->GetLeaf(
"SiStripQualBad");
177 TLeaf* acceptLf =
CalibTree->GetLeaf(
"withinAcceptance");
178 TLeaf* layerLf =
CalibTree->GetLeaf(
"layer");
179 TLeaf* nHitsLf =
CalibTree->GetLeaf(
"nHits");
180 TLeaf* xLf =
CalibTree->GetLeaf(
"TrajGlbX");
181 TLeaf* yLf =
CalibTree->GetLeaf(
"TrajGlbY");
182 TLeaf* zLf =
CalibTree->GetLeaf(
"TrajGlbZ");
183 TLeaf* ResXSigLf =
CalibTree->GetLeaf(
"ResXSig");
185 for(
int l=0;
l < 35;
l++) {
195 cout <<
"Successfully loaded analyze function with " << nevents <<
" events!\n";
196 cout <<
"A module is bad if efficiency < " <<
threshold <<
" and has at least " <<
nModsMin <<
" nModsMin." << endl;
201 unsigned int isBad = (
unsigned int)BadLf->GetValue();
202 unsigned int quality = (
unsigned int)sistripLf->GetValue();
203 unsigned int id = (
unsigned int)idLf->GetValue();
204 unsigned int accept = (
unsigned int)acceptLf->GetValue();
205 unsigned int layer = (
unsigned int)layerLf->GetValue();
206 unsigned int nHits = (
unsigned int)nHitsLf->GetValue();
207 double x = xLf->GetValue();
208 double y = yLf->GetValue();
209 double z = zLf->GetValue();
210 double resxsig = ResXSigLf->GetValue();
211 bool badquality =
false;
213 if(
_bunchx != BunchLf->GetValue())
continue;
219 if(accept != 1 || nHits < 8)
continue;
220 if(quality == 1) badquality =
true;
225 bool badflag =
false;
227 if(isBad == 1) badflag =
true;
230 if(isBad == 1 || resxsig >
_ResXSig) badflag =
true;
232 if(badflag && !badquality) {
238 hits[layer].push_back(temphit);
240 pair<unsigned int, unsigned int> newgoodpair (1,1);
241 pair<unsigned int, unsigned int> newbadpair (1,0);
243 map< unsigned int, pair< unsigned int, unsigned int> >::iterator it =
modCounter[layer].find(
id);
246 if(badflag)
modCounter[layer][id] = newbadpair;
250 ((*it).second.first)++;
251 if(!badflag) ((*it).second.second)++;
258 else if(layer > 10 && layer < 14) {
259 if( ((
id>>13)&0x3) == 1) {
263 else if( ((
id>>13)&0x3) == 2) {
268 else if(layer > 13 && layer <= 22) {
269 if( ((
id>>18)&0x3) == 1) {
273 else if( ((
id>>18)&0x3) == 2) {
284 else if(layer > 10 && layer < 14) {
285 if( ((
id>>13)&0x3) == 1) {
289 else if( ((
id>>13)&0x3) == 2) {
294 else if(layer > 13 && layer <= 22) {
295 if( ((
id>>18)&0x3) == 1) {
299 else if( ((
id>>18)&0x3) == 2) {
316 int NTkBadComponent[4];
317 int NBadComponent[4][19][4];
321 std::stringstream ssV[4][19];
323 for(
int i=0;
i<4;++
i){
324 NTkBadComponent[
i]=0;
325 for(
int j=0;
j<19;++
j){
328 NBadComponent[
i][
j][
k]=0;
335 for (
size_t i=0;
i<BC.size();++
i){
342 NTkBadComponent[0]++;
344 NTkBadComponent[1]+= ( (BC[
i].BadFibers>>2)&0x1 )+ ( (BC[
i].BadFibers>>1)&0x1 ) + ( (BC[
i].BadFibers)&0x1 );
346 NTkBadComponent[2]+= ( (BC[
i].BadApvs>>5)&0x1 )+ ( (BC[
i].BadApvs>>4)&0x1 ) + ( (BC[
i].BadApvs>>3)&0x1 ) +
347 ( (BC[
i].BadApvs>>2)&0x1 )+ ( (BC[
i].BadApvs>>1)&0x1 ) + ( (BC[
i].BadApvs)&0x1 );
399 unsigned int detid=rp->detid;
420 for(
int it=0;it<sqrange.second-sqrange.first;it++){
422 NTkBadComponent[3]+=range;
423 NBadComponent[subdet][0][3]+=range;
424 NBadComponent[subdet][component][3]+=range;
430 edm::LogError(
"SiStripQualityStatistics") <<
"PROBLEM detid " << detid <<
" value " << percentage<< std::endl;
436 cout <<
"\n-----------------\nNew IOV starting from run " << e.
id().
run() <<
" event " << e.
id().
event() <<
" lumiBlock " << e.
luminosityBlock() <<
" time " << e.
time().
value() <<
"\n-----------------\n";
437 cout <<
"\n-----------------\nGlobal Info\n-----------------";
438 cout <<
"\nBadComponent \t Modules \tFibers \tApvs\tStrips\n----------------------------------------------------------------";
439 cout <<
"\nTracker:\t\t"<<NTkBadComponent[0]<<
"\t"<<NTkBadComponent[1]<<
"\t"<<NTkBadComponent[2]<<
"\t"<<NTkBadComponent[3];
441 cout <<
"\nTIB:\t\t\t"<<NBadComponent[0][0][0]<<
"\t"<<NBadComponent[0][0][1]<<
"\t"<<NBadComponent[0][0][2]<<
"\t"<<NBadComponent[0][0][3];
442 cout <<
"\nTID:\t\t\t"<<NBadComponent[1][0][0]<<
"\t"<<NBadComponent[1][0][1]<<
"\t"<<NBadComponent[1][0][2]<<
"\t"<<NBadComponent[1][0][3];
443 cout <<
"\nTOB:\t\t\t"<<NBadComponent[2][0][0]<<
"\t"<<NBadComponent[2][0][1]<<
"\t"<<NBadComponent[2][0][2]<<
"\t"<<NBadComponent[2][0][3];
444 cout <<
"\nTEC:\t\t\t"<<NBadComponent[3][0][0]<<
"\t"<<NBadComponent[3][0][1]<<
"\t"<<NBadComponent[3][0][2]<<
"\t"<<NBadComponent[3][0][3];
447 for (
int i=1;
i<5;++
i)
448 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];
450 for (
int i=1;
i<4;++
i)
451 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];
452 for (
int i=4;
i<7;++
i)
453 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];
455 for (
int i=1;
i<7;++
i)
456 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];
458 for (
int i=1;
i<10;++
i)
459 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];
460 for (
int i=10;
i<19;++
i)
461 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];
464 cout <<
"\n----------------------------------------------------------------\n\t\t Detid \tModules Fibers Apvs\n----------------------------------------------------------------";
465 for (
int i=1;
i<5;++
i)
466 cout <<
"\nTIB Layer " <<
i <<
" :" << ssV[0][
i].str();
468 for (
int i=1;
i<4;++
i)
469 cout <<
"\nTID+ Disk " <<
i <<
" :" << ssV[1][
i].str();
470 for (
int i=4;
i<7;++
i)
471 cout <<
"\nTID- Disk " <<
i-3 <<
" :" << ssV[1][
i].str();
473 for (
int i=1;
i<7;++
i)
474 cout <<
"\nTOB Layer " <<
i <<
" :" << ssV[2][
i].str();
476 for (
int i=1;
i<10;++
i)
477 cout <<
"\nTEC+ Disk " <<
i <<
" :" << ssV[3][
i].str();
478 for (
int i=10;
i<19;++
i)
479 cout <<
"\nTEC- Disk " <<
i-9 <<
" :" << ssV[3][
i].str();
484 cout <<
"Entering hot cold map generation!\n";
485 TStyle* gStyle =
new TStyle(
"gStyle",
"myStyle");
487 gStyle->SetPalette(1);
488 gStyle->SetCanvasColor(kWhite);
489 gStyle->SetOptStat(0);
494 for(Long_t maplayer = 1; maplayer <=22; maplayer++) {
496 if(maplayer > 0 && maplayer <= 4) {
498 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TIB",(
int)(maplayer)),
"TIB",100,-1,361,100,-100,100);
499 temph2->GetXaxis()->SetTitle(
"Phi");
500 temph2->GetXaxis()->SetBinLabel(1,TString(
"360"));
501 temph2->GetXaxis()->SetBinLabel(50,TString(
"180"));
502 temph2->GetXaxis()->SetBinLabel(100,TString(
"0"));
503 temph2->GetYaxis()->SetTitle(
"Global Z");
504 temph2->SetOption(
"colz");
507 else if(maplayer > 4 && maplayer <= 10) {
509 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TOB",(
int)(maplayer-4)),
"TOB",100,-1,361,100,-120,120);
510 temph2->GetXaxis()->SetTitle(
"Phi");
511 temph2->GetXaxis()->SetBinLabel(1,TString(
"360"));
512 temph2->GetXaxis()->SetBinLabel(50,TString(
"180"));
513 temph2->GetXaxis()->SetBinLabel(100,TString(
"0"));
514 temph2->GetYaxis()->SetTitle(
"Global Z");
515 temph2->SetOption(
"colz");
518 else if(maplayer > 10 && maplayer <= 13) {
521 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TID-",(
int)(maplayer-10)),
"TID-",100,-100,100,100,-100,100);
522 temph2->GetXaxis()->SetTitle(
"Global Y");
523 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
524 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
525 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
526 temph2->GetYaxis()->SetTitle(
"Global X");
527 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
528 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
529 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
530 temph2->SetOption(
"colz");
532 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TID+",(
int)(maplayer-10)),
"TID+",100,-100,100,100,-100,100);
533 temph2->GetXaxis()->SetTitle(
"Global Y");
534 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
535 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
536 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
537 temph2->GetYaxis()->SetTitle(
"Global X");
538 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
539 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
540 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
541 temph2->SetOption(
"colz");
544 else if(maplayer > 13) {
547 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TEC-",(
int)(maplayer-13)),
"TEC-",100,-120,120,100,-120,120);
548 temph2->GetXaxis()->SetTitle(
"Global Y");
549 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
550 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
551 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
552 temph2->GetYaxis()->SetTitle(
"Global X");
553 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
554 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
555 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
556 temph2->SetOption(
"colz");
558 temph2 =
fs->
make<TH2F>(Form(
"%s%i",
"TEC+",(
int)(maplayer-13)),
"TEC+",100,-120,120,100,-120,120);
559 temph2->GetXaxis()->SetTitle(
"Global Y");
560 temph2->GetXaxis()->SetBinLabel(1,TString(
"+Y"));
561 temph2->GetXaxis()->SetBinLabel(50,TString(
"0"));
562 temph2->GetXaxis()->SetBinLabel(100,TString(
"-Y"));
563 temph2->GetYaxis()->SetTitle(
"Global X");
564 temph2->GetYaxis()->SetBinLabel(1,TString(
"-X"));
565 temph2->GetYaxis()->SetBinLabel(50,TString(
"0"));
566 temph2->GetYaxis()->SetBinLabel(100,TString(
"+X"));
567 temph2->SetOption(
"colz");
571 for(Long_t mylayer = 1; mylayer <= 22; mylayer++) {
575 vector<hit>::const_iterator
iter;
576 for(iter =
hits[mylayer].
begin(); iter !=
hits[mylayer].end(); iter++) {
580 if(mylayer > 0 && mylayer <= 4) {
583 HotColdMaps[mylayer - 1]->Fill(360.-phi,iter->z,1.);
585 else if(mylayer > 4 && mylayer <= 10) {
588 HotColdMaps[mylayer - 1]->Fill(360.-phi,iter->z,1.);
590 else if(mylayer > 10 && mylayer <= 13) {
593 int side = (((iter->id)>>13) & 0x3);
594 if(side == 1)
HotColdMaps[(mylayer - 1) + (mylayer - 11)]->Fill(-iter->y,iter->x,1.);
595 else if(side == 2)
HotColdMaps[(mylayer - 1) + (mylayer - 10)]->Fill(-iter->y,iter->x,1.);
599 else if(mylayer > 13) {
602 int side = (((iter->id)>>18) & 0x3);
603 if(side == 1)
HotColdMaps[(mylayer + 2) + (mylayer - 14)]->Fill(-iter->y,iter->x,1.);
604 else if(side == 2)
HotColdMaps[(mylayer + 2) + (mylayer - 13)]->Fill(-iter->y,iter->x,1.);
610 cout <<
"Finished HotCold Map Generation\n";
614 cout <<
"Entering TKMap generation!\n";
617 for(Long_t
i = 1;
i <= 22;
i++) {
622 map<unsigned int, pair<unsigned int, unsigned int> >::const_iterator ih;
626 double myeff = (double)(((*ih).second).second)/(((*ih).second).first);
631 cout <<
"Layer " <<
i <<
" module " << (*ih).first <<
" efficiency " << myeff <<
" " << (((*ih).second).
second) <<
"/" << (((*ih).second).
first) << endl;
637 if((((*ih).second).first) < 100 ) {
638 cout <<
"Module " << (*ih).first <<
" layer " <<
i <<
" is under occupancy at " << (((*ih).second).
first) << endl;
652 tkmap->
save(
true, 0, 0,
"SiStripHitEffTKMap.png");
653 tkmapbad->
save(
true, 0, 0,
"SiStripHitEffTKMapBad.png");
654 cout <<
"Finished TKMap Generation\n";
659 cout <<
"Entering SQLite file generation!\n";
660 std::vector<unsigned int> BadStripList;
661 unsigned short NStrips;
667 map< unsigned int, double >::const_iterator it;
672 cout <<
"Number of strips module " << (*it).first <<
" is " << NStrips << endl;
673 BadStripList.push_back(pQuality->
encode(0,NStrips,0));
675 id1=(
unsigned int)(*it).first;
676 cout <<
"ID1 shoudl match list of modules above " << id1 << endl;
680 BadStripList.clear();
691 for(Long_t
i=1;
i<=22;
i++) {
697 cout <<
"The total efficiency is " << double(totalfound)/double(totaltotal) << endl;
705 TH1F *
found =
fs->
make<TH1F>(
"found",
"found",nLayers+1,0,nLayers+1);
706 TH1F *
all =
fs->
make<TH1F>(
"all",
"all",nLayers+1,0,nLayers+1);
707 TH1F *found2 =
fs->
make<TH1F>(
"found2",
"found2",nLayers+1,0,nLayers+1);
708 TH1F *all2 =
fs->
make<TH1F>(
"all2",
"all2",nLayers+1,0,nLayers+1);
710 found->SetBinContent(0,-1);
711 all->SetBinContent(0,1);
713 TCanvas *c7 =
new TCanvas(
"c7",
" test ",10,10,800,600);
717 for (Long_t
i=1;
i< nLayers+1; ++
i) {
727 found->SetBinContent(
i,0);
728 all->SetBinContent(
i,10);
736 found2->SetBinContent(
i,0);
737 all2->SetBinContent(
i,10);
748 TGraphAsymmErrors *gr =
new TGraphAsymmErrors(nLayers+1);
749 gr->BayesDivide(found,all);
751 TGraphAsymmErrors *gr2 =
new TGraphAsymmErrors(nLayers+1);
752 gr2->BayesDivide(found2,all2);
754 for(
int j = 0;
j<nLayers+1;
j++){
755 gr->SetPointError(
j, 0., 0., gr->GetErrorYlow(
j),gr->GetErrorYhigh(
j) );
756 gr2->SetPointError(
j, 0., 0., gr2->GetErrorYlow(
j),gr2->GetErrorYhigh(
j) );
759 gr->GetXaxis()->SetLimits(0,nLayers);
760 gr->SetMarkerColor(2);
761 gr->SetMarkerSize(1.2);
764 gr->SetMarkerStyle(20);
765 gr->SetMinimum(0.90);
766 gr->SetMaximum(1.001);
767 gr->GetYaxis()->SetTitle(
"Efficiency");
769 gr2->GetXaxis()->SetLimits(0,nLayers);
770 gr2->SetMarkerColor(1);
771 gr2->SetMarkerSize(1.2);
772 gr2->SetLineColor(1);
773 gr2->SetLineWidth(4);
774 gr2->SetMarkerStyle(21);
775 gr2->SetMinimum(0.90);
776 gr2->SetMaximum(1.001);
777 gr2->GetYaxis()->SetTitle(
"Efficiency");
780 for ( Long_t
k=1;
k<nLayers+1;
k++) {
786 label = TString(
"TIB ") +
k;
787 }
else if (
k>4&&
k<11) {
788 label = TString(
"TOB ")+(
k-4);
789 }
else if (
k>10&&
k<14) {
790 label = TString(
"TID- ")+(
k-10);
791 }
else if (
k>13&&
k<17) {
792 label = TString(
"TID+ ")+(
k-13);
793 }
else if (
k>16&&
k<26) {
794 label = TString(
"TEC- ")+(
k-16);
796 label = TString(
"TEC+ ")+(
k-25);
798 gr->GetXaxis()->SetBinLabel(((
k+1)*100)/(nLayers)-2,label);
799 gr2->GetXaxis()->SetBinLabel(((
k+1)*100)/(nLayers)-2,label);
803 gr->GetXaxis()->SetNdivisions(36);
806 TPad *overlay =
new TPad(
"overlay",
"",0,0,1,1);
807 overlay->SetFillStyle(4000);
808 overlay->SetFillColor(0);
809 overlay->SetFrameFillStyle(4000);
810 overlay->Draw(
"same");
814 TLegend *
leg =
new TLegend(0.70,0.20,0.92,0.39);
815 leg->AddEntry(gr,
"Good Modules",
"p");
816 leg->AddEntry(gr2,
"All Modules",
"p");
817 leg->SetTextSize(0.020);
818 leg->SetFillColor(0);
821 c7->SaveAs(
"Summary.png");
832 for(;rIter!=rIterEnd;++rIter){
834 if ( ! obj->
put(rIter->detid,range) )
835 edm::LogError(
"SiStripHitEffFromCalibTree")<<
"[SiStripHitEffFromCalibTree::getNewObject] detid already exists"<<std::endl;
844 if((x>=0)&&(y>=0)) phi = atan(y/x);
845 else if((x>=0)&&(y<=0)) phi = atan(y/x) + 2*
Pi;
846 else if((x<=0)&&(y>=0)) phi = atan(y/x) +
Pi;
847 else phi = atan(y/x) +
Pi;
857 ssV[
i][component] <<
"\n\t\t "
862 ssV[
i][component] <<
"x " <<( (BC.
BadFibers>>1)&0x1 );
865 ssV[
i][component] << ( (BC.
BadFibers>>1)&0x1 ) <<
" "
867 ssV[
i][component] <<
" \t "
869 << ( (BC.
BadApvs>>1)&0x1 ) <<
" ";
871 ssV[
i][component] <<
"x x " << ( (BC.
BadApvs>>2)&0x1 ) <<
" "
874 ssV[
i][component] << ( (BC.
BadApvs>>2)&0x1 ) <<
" "
875 << ( (BC.
BadApvs>>3)&0x1 ) <<
" "
876 << ( (BC.
BadApvs>>4)&0x1 ) <<
" "
877 << ( (BC.
BadApvs>>5)&0x1 ) <<
" ";
882 NBadComponent[
i][component][2]+= ( (BC.
BadApvs>>5)&0x1 )+ ( (BC.
BadApvs>>4)&0x1 ) + ( (BC.
BadApvs>>3)&0x1 ) +
890 NBadComponent[
i][0][0]++;
891 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)
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