44 #include "TPaveText.h"
45 #include "TImageDump.h"
47 #include "TStopwatch.h"
49 #include "TPaveLabel.h"
71 " Creating SiPixelDataQuality " <<
"\n" ;
83 for (
int i = 0;
i < 40; ++
i)
95 " Deleting SiPixelDataQuality " <<
"\n" ;
112 string mEName = mE->
getName() ;
116 if( mEName.find(
"_3") != string::npos )
118 string detIdString = mEName.substr((mEName.find_last_of(
"_"))+1,9);
119 std::istringstream isst;
120 isst.str(detIdString);
153 allmodsVec =
new TH1D(
"allmodsVec",
"allmodsVec",40,0.,40.);
154 errmodsVec =
new TH1D(
"errmodsVec",
"errmodsVec",40,0.,40.);
155 goodmodsVec =
new TH1D(
"goodmodsVec",
"goodmodsVec",40,0.,40.);
167 allmodsMap =
new TH2F(
"allmodsMap",
"allmodsMap",2,0.,2.,7,0.,7.);
168 errmodsMap =
new TH2F(
"errmodsMap",
"errmodsMap",2,0.,2.,7,0.,7.);
169 goodmodsMap =
new TH2F(
"goodmodsMap",
"goodmodsMap",2,0.,2.,7,0.,7.);
201 SummaryBarrel = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelBarrelFraction");
203 SummaryEndcap = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelEndcapFraction");
208 SummaryBarrel = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelBarrelFraction");
210 SummaryEndcap = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelEndcapFraction");
217 NErrorsFEDs = bei->
get(
"Pixel/AdditionalPixelErrors/FEDsNErrorsCut");
250 for(
int j=1;
j!=41;
j++){
257 for(
int i=1;
i!=3;
i++)
for(
int j=1;
j!=8;
j++){
298 string currDir = bei->
pwd();
299 string dname = currDir.substr(currDir.find_last_of(
"/")+1);
302 if((!Tier0Flag && dname.find(
"Module_")!=string::npos) ||
303 (Tier0Flag && (dname.find(
"Ladder_")!=string::npos || dname.find(
"Blade_")!=string::npos))){
307 if(currDir.find(
"Pixel")!=string::npos)
allMods_++;
308 if(currDir.find(
"Barrel")!=string::npos)
barrelMods_++;
309 if(currDir.find(
"Endcap")!=string::npos)
endcapMods_++;
310 vector<string> meVec = bei->
getMEs();
311 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
312 string full_path = currDir +
"/" + (*it);
314 if(full_path.find(
"ndigis_")!=string::npos){
325 }
else if(Tier0Flag && full_path.find(
"nclusters_OnTrack_")!=string::npos){
332 }
else if(!Tier0Flag && full_path.find(
"nclusters_")!=string::npos){
343 for (vector<string>::const_iterator ic = subDirVec.begin();
344 ic != subDirVec.end(); ic++) {
358 if(
DONE_ && currDir==
"Pixel/EventInfo/reportSummaryContents"){
361 MonitorElement * me_err = bei->
get(
"Pixel/AdditionalPixelErrors/FedETypeNErrArray");
363 if(me_err && me_evt){
364 for(
int i=1;
i!=41;
i++)
for(
int j=1;
j!=22;
j++)
387 meName0 =
"Pixel/Barrel/SUMDIG_ndigis_Barrel";
392 meName0 =
"Pixel/Barrel/SUMOFF_ndigis_Barrel";
396 me = bei->
get(meName0);
405 if(!Tier0Flag) meName0 =
"Pixel/Endcap/SUMDIG_ndigis_Endcap";
406 else meName0 =
"Pixel/Endcap/SUMOFF_ndigis_Endcap";
407 me = bei->
get(meName0);
415 if(!Tier0Flag) meName0 =
"Pixel/Barrel/SUMDIG_adc_Barrel";
416 else meName0 =
"Pixel/Barrel/SUMOFF_adc_Barrel";
417 me = bei->
get(meName0);
425 if(!Tier0Flag) meName0 =
"Pixel/Endcap/SUMDIG_adc_Endcap";
426 else meName0 =
"Pixel/Endcap/SUMOFF_adc_Endcap";
427 me = bei->
get(meName0);
439 meName0 =
"Pixel/Barrel/SUMCLU_size_Barrel";
443 meName0 =
"Pixel/Barrel/SUMOFF_size_OnTrack_Barrel";
447 me = bei->
get(meName0);
455 if(!Tier0Flag) meName0 =
"Pixel/Endcap/SUMCLU_size_Endcap";
456 else meName0 =
"Pixel/Endcap/SUMOFF_size_OnTrack_Endcap";
457 me = bei->
get(meName0);
465 if(!Tier0Flag) meName0 =
"Pixel/Barrel/SUMCLU_charge_Barrel";
466 else meName0 =
"Pixel/Barrel/SUMOFF_charge_OnTrack_Barrel";
467 me = bei->
get(meName0);
475 if(!Tier0Flag) meName0 =
"Pixel/Endcap/SUMCLU_charge_Endcap";
476 else meName0 =
"Pixel/Endcap/SUMOFF_charge_OnTrack_Endcap";
477 me = bei->
get(meName0);
485 if(!Tier0Flag) meName0 =
"Pixel/Barrel/SUMCLU_nclusters_Barrel";
486 else meName0 =
"Pixel/Barrel/SUMOFF_nclusters_OnTrack_Barrel";
487 me = bei->
get(meName0);
495 if(!Tier0Flag) meName0 =
"Pixel/Endcap/SUMCLU_nclusters_Endcap";
496 else meName0 =
"Pixel/Endcap/SUMOFF_nclusters_OnTrack_Endcap";
497 me = bei->
get(meName0);
506 meName0 =
"Pixel/Tracks/ntracks_generalTracks";
507 me = bei->
get(meName0);
523 float pixelFlag = -1., barrelFlag = -1., endcapFlag = -1.;
524 float barrel_errors_temp[1]={-1.};
int barrel_cuts_temp[5]={5*-1};
525 float endcap_errors_temp[1]={-1.};
int endcap_cuts_temp[5]={5*-1};
526 int pixel_cuts_temp[1]={-1};
527 float combinedCuts = 1.;
int numerator = 0,
denominator = 0;
530 me = bei->
get(
"Pixel/Barrel/BarrelNErrorsCut");
532 me = bei->
get(
"Pixel/Barrel/BarrelNDigisCut");
534 me = bei->
get(
"Pixel/Barrel/BarrelDigiChargeCut");
536 me = bei->
get(
"Pixel/Barrel/BarrelClusterSizeCut");
538 me = bei->
get(
"Pixel/Barrel/BarrelNClustersCut");
540 me = bei->
get(
"Pixel/Barrel/BarrelClusterChargeCut");
542 for(
int k=0;
k!=5;
k++){
543 if(barrel_cuts_temp[
k]>=0){
544 numerator = numerator + barrel_cuts_temp[
k];
550 barrelFlag = barrel_errors_temp[0] * combinedCuts;
557 me = bei->
get(
"Pixel/Endcap/EndcapNErrorsCut");
559 me = bei->
get(
"Pixel/Endcap/EndcapNDigisCut");
561 me = bei->
get(
"Pixel/Endcap/EndcapDigiChargeCut");
563 me = bei->
get(
"Pixel/Endcap/EndcapClusterSizeCut");
565 me = bei->
get(
"Pixel/Endcap/EndcapNClustersCut");
567 me = bei->
get(
"Pixel/Endcap/EndcapClusterChargeCut");
569 for(
int k=0;
k!=5;
k++){
570 if(endcap_cuts_temp[
k]>=0){
571 numerator = numerator + endcap_cuts_temp[
k];
577 endcapFlag = endcap_errors_temp[0] * combinedCuts;
582 me = bei->
get(
"Pixel/Tracks/PixelTracksCut");
587 for(
int k=0;
k!=5;
k++){
588 if(barrel_cuts_temp[
k]>=0){
589 numerator = numerator + barrel_cuts_temp[
k];
593 if(endcap_cuts_temp[
k]>=0){
594 numerator = numerator + endcap_cuts_temp[
k];
597 if(
k<1 && pixel_cuts_temp[
k]>=0){
598 numerator = numerator + pixel_cuts_temp[
k];
610 SummaryBarrel = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelBarrelFraction");
612 SummaryEndcap = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelEndcapFraction");
623 int nEvents_lastLS_){
633 float BarrelRate_LS = 0.;
634 float EndcapRate_LS = 0.;
635 float PixelRate_LS = 0.;
641 BarrelRate_LS = nBarrelErrors_LS / nEvents_LS / 32.;
642 EndcapRate_LS = nEndcapErrors_LS / nEvents_LS / 8.;
643 PixelRate_LS = (nBarrelErrors_LS + nEndcapErrors_LS) / nEvents_LS / 40.;
647 float pixelFlag = 1.-PixelRate_LS;
648 float barrelFlag = 1.-BarrelRate_LS;
649 float endcapFlag = 1.-EndcapRate_LS;
654 SummaryBarrel = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelBarrelFraction");
656 SummaryEndcap = bei->
get(
"Pixel/EventInfo/reportSummaryContents/PixelEndcapFraction");
678 cout<<
"RESETS"<<endl;
682 for(
int j=1;
j!=41;
j++){
691 for(
int i=1;
i!=3;
i++)
for(
int j=1;
j!=8;
j++){
899 string currDir = bei->
pwd();
900 if(currDir.find(
"Reference")!=string::npos || currDir.find(
"Additional")!=string::npos)
return;
902 string dname = currDir.substr(currDir.find_last_of(
"/")+1);
903 if(dname.find(
"Module_")!=string::npos && currDir.find(
"Reference")==string::npos){
904 vector<string> meVec = bei->
getMEs();
905 int detId=-1;
int fedId=-1;
906 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++){
908 string full_path = currDir +
"/" + (*it);
909 if(detId==-1 && full_path.find(
"SUMOFF")==string::npos &&
910 (full_path.find(
"ndigis")!=string::npos && full_path.find(
"SUMDIG")==string::npos) &&
914 if((full_path.find(
"ndigis")!=string::npos)){
917 for(
int fedid=0; fedid!=40; ++fedid){
919 uint32_t newDetId = detId;
920 if(converter.hasDetUnit(newDetId)){
926 if(full_path.find(
"ndigis")!=string::npos) NDigis = me->
getEntries();
940 for (vector<string>::const_iterator ic = subDirVec.begin();
941 ic != subDirVec.end(); ic++) {
949 bei->
cd(
"Pixel/EventInfo/reportSummaryContents");
950 if(bei->
pwd()==
"Pixel/EventInfo/reportSummaryContents"){
951 for(
int i=0;
i!=40;
i++){
952 static const char buf[] =
"Pixel/AdditionalPixelErrors/FED_%d/FedChNErrArray_%d";
953 char fedplot[
sizeof(buf)+4];
955 for(
int j=0;
j!=37;
j++){
956 sprintf(fedplot,buf,
i,
j);
962 if(NErrors>0){
errmodsVec->SetBinContent(
i,NErrors); }
970 for(
int i=1;
i!=41;
i++){
975 if ((mydigis + myerrs) > 0.){
976 contents = mydigis/(mydigis + myerrs);
989 float barrel_errors_temp[1]={-1.};
int barrel_cuts_temp[6]={6*-1};
990 float endcap_errors_temp[1]={-1.};
int endcap_cuts_temp[6]={6*-1};
991 int pixel_cuts_temp[1]={-1};
994 me = bei->
get(
"Pixel/Barrel/BarrelNErrorsCut");
996 me = bei->
get(
"Pixel/Endcap/EndcapNErrorsCut");
1000 me = bei->
get(
"Pixel/Barrel/BarrelNDigisCut");
1002 me = bei->
get(
"Pixel/Barrel/BarrelDigiChargeCut");
1004 me = bei->
get(
"Pixel/Barrel/BarrelClusterSizeCut");
1006 me = bei->
get(
"Pixel/Barrel/BarrelNClustersCut");
1008 me = bei->
get(
"Pixel/Barrel/BarrelClusterChargeCut");
1010 me = bei->
get(
"Pixel/Endcap/EndcapNDigisCut");
1012 me = bei->
get(
"Pixel/Endcap/EndcapDigiChargeCut");
1014 me = bei->
get(
"Pixel/Endcap/EndcapClusterSizeCut");
1016 me = bei->
get(
"Pixel/Endcap/EndcapNClustersCut");
1018 me = bei->
get(
"Pixel/Endcap/EndcapClusterChargeCut");
1020 for(
int j=2;
j!=7;
j++){
1025 me = bei->
get(
"Pixel/Tracks/PixelTracksCut");
const std::string & getName(void) const
get name of ME
void computeGlobalQualityFlagByLumi(DQMStore *bei, bool init, int nFEDs, bool Tier0Flag, int nEvents_lastLS_)
void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< std::string > getSubdirs(void) const
void fillGlobalQualityPlot(DQMStore *bei, bool init, edm::EventSetup const &eSetup, int nFEDs, bool Tier0Flag, int lumisec)
MonitorElement * ClusterChargeBarrel
void cd(void)
go to top directory (ie. root)
void computeGlobalQualityFlag(DQMStore *bei, bool init, int nFEDs, bool Tier0Flag)
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
bool hasError(void) const
true if at least of one of the quality tests returned an error
MonitorElement * SummaryBarrel
MonitorElement * ClusterSizeEndcap
double getEntries(void) const
get # of entries
int getDetId(MonitorElement *mE)
(Documentation under construction).
MonitorElement * NPixelTracks
MonitorElement * bookFloat(const char *name)
Book float.
MonitorElement * NErrorsFEDs
MonitorElement * NDigisEndcap
MonitorElement * SummaryPixel
MonitorElement * NErrorsEndcap
double getFloatValue(void) const
MonitorElement * NErrorsBarrel
MonitorElement * NClustersEndcap
void bookGlobalQualityFlag(DQMStore *bei, bool Tier0Flag, int nFEDs)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
MonitorElement * ClusterSizeBarrel
MonitorElement * SummaryReportMap
~SiPixelDataQuality()
Destructor of the SiPixelDataQuality class.
int64_t getIntValue(void) const
edm::ESHandle< SiPixelFedCablingMap > theCablingMap
MonitorElement * DigiChargeEndcap
MonitorElement * SummaryEndcap
T const * product() const
std::vector< std::string > getMEs(void) const
get list of (non-dir) MEs of current directory
double getBinContent(int binx) const
get content of bin (1-D)
void goUp(void)
equivalent to "cd .."
MonitorElement * NDigisBarrel
MonitorElement * bookInt(const char *name)
Book int.
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
MonitorElement * ClusterChargeEndcap
MonitorElement * DigiChargeBarrel
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * NClustersBarrel
void setCurrentFolder(const std::string &fullpath)
SiPixelDataQuality(bool offlineXMLfile)
Constructor of the SiPixelInformationExtractor class.
const std::string & pwd(void) const