Skip to content

Commit

Permalink
Fix to PixB hit efficiency plots
Browse files Browse the repository at this point in the history
  • Loading branch information
fioriNTU committed Aug 7, 2015
1 parent d437bfd commit e86bea8
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 75 deletions.
132 changes: 65 additions & 67 deletions DQM/SiPixelMonitorClient/src/SiPixelActionExecutor.cc
Expand Up @@ -1622,13 +1622,13 @@ void SiPixelActionExecutor::bookEfficiency(DQMStore::IBooker & iBooker, bool isU
iBooker.setCurrentFolder("Pixel/Barrel");
if (!isUpgrade) {
if(Tier0Flag_){
HitEfficiency_L1 = iBooker.book2D("HitEfficiency_L1","Hit Efficiency in Barrel_Layer1;Module;Ladder",8,-4,4,20,-10.,10.);
HitEfficiency_L2 = iBooker.book2D("HitEfficiency_L2","Hit Efficiency in Barrel_Layer2;Module;Ladder",8,-4,4,32,-16.,16.);
HitEfficiency_L3 = iBooker.book2D("HitEfficiency_L3","Hit Efficiency in Barrel_Layer3;Module;Ladder",8,-4,4,44,-22.,22.);
HitEfficiency_L1 = iBooker.book2D("HitEfficiency_L1","Hit Efficiency in Barrel_Layer1;Module;Ladder",9,-4.5,4.5,21,-10.5,10.5);
HitEfficiency_L2 = iBooker.book2D("HitEfficiency_L2","Hit Efficiency in Barrel_Layer2;Module;Ladder",9,-4.5,4.5,33,-16.5,16.5);
HitEfficiency_L3 = iBooker.book2D("HitEfficiency_L3","Hit Efficiency in Barrel_Layer3;Module;Ladder",9,-4.5,4.5,45,-22.5,22.5);
}else{
HitEfficiency_L1 = iBooker.book2D("HitEfficiency_L1","Hit Efficiency in Barrel_Layer1;Module;Ladder",8,-4.,4.,20,-10.,10.);
HitEfficiency_L2 = iBooker.book2D("HitEfficiency_L2","Hit Efficiency in Barrel_Layer2;Module;Ladder",8,-4.,4.,32,-16.,16.);
HitEfficiency_L3 = iBooker.book2D("HitEfficiency_L3","Hit Efficiency in Barrel_Layer3;Module;Ladder",8,-4.,4.,44,-22.,22.);
HitEfficiency_L1 = iBooker.book2D("HitEfficiency_L1","Hit Efficiency in Barrel_Layer1;Module;Ladder",9,-4.5,4.5,21,-10.5,10.5);
HitEfficiency_L2 = iBooker.book2D("HitEfficiency_L2","Hit Efficiency in Barrel_Layer2;Module;Ladder",9,-4.5,4.5,33,-16.5,16.5);
HitEfficiency_L3 = iBooker.book2D("HitEfficiency_L3","Hit Efficiency in Barrel_Layer3;Module;Ladder",9,-4.5,4.5,45,-22.5,22.5);
}
}//endifNOTUpgrade
else if (isUpgrade) {
Expand Down Expand Up @@ -1696,82 +1696,80 @@ void SiPixelActionExecutor::createEfficiency(DQMStore::IBooker & iBooker, DQMSto
//=============================================================================================================

void SiPixelActionExecutor::fillEfficiency(DQMStore::IBooker & iBooker, DQMStore::IGetter & iGetter, bool isbarrel, bool isUpgrade){
//cout<<"entering SiPixelActionExecutor::fillEfficiency..."<<std::endl;

string currDir = iBooker.pwd();
string dname = currDir.substr(currDir.find_last_of("/")+1);
//cout<<"currDir= "<<currDir<< " , dname= "<<dname<<std::endl;


if(Tier0Flag_){ // Offline
if(isbarrel && dname.find("Ladder_")!=string::npos){
if (!isUpgrade) {
vector<string> meVec = iGetter.getMEs();
for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
string full_path = currDir + "/" + (*it);
vector<string> meVec = iGetter.getMEs();
for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
string full_path = currDir + "/" + (*it);

if(full_path.find("missingMod_")!=string::npos){ // If we have missing hits ME

//Get the MEs that contain missing and valid hits
MonitorElement * missing = iGetter.get(full_path);
if (!missing) continue;
string new_path = full_path.replace(full_path.find("missing"),7,"valid");
MonitorElement * valid = iGetter.get(new_path);
if (!valid) continue;
//int binx = 0;
int biny = 0;
//get the ladder number

if(dname.find("01")!=string::npos){ biny = 1;}else if(dname.find("02")!=string::npos){ biny = 2;}
else if(dname.find("03")!=string::npos){ biny = 3;}else if(dname.find("04")!=string::npos){ biny = 4;}
else if(dname.find("05")!=string::npos){ biny = 5;}else if(dname.find("06")!=string::npos){ biny = 6;}
else if(dname.find("07")!=string::npos){ biny = 7;}else if(dname.find("08")!=string::npos){ biny = 8;}
else if(dname.find("09")!=string::npos){ biny = 9;}else if(dname.find("10")!=string::npos){ biny = 10;}
else if(dname.find("11")!=string::npos){ biny = 11;}else if(dname.find("12")!=string::npos){ biny = 12;}
else if(dname.find("13")!=string::npos){ biny = 13;}else if(dname.find("14")!=string::npos){ biny = 14;}
else if(dname.find("15")!=string::npos){ biny = 15;}else if(dname.find("16")!=string::npos){ biny = 16;}
else if(dname.find("17")!=string::npos){ biny = 17;}else if(dname.find("18")!=string::npos){ biny = 18;}
else if(dname.find("19")!=string::npos){ biny = 19;}else if(dname.find("20")!=string::npos){ biny = 20;}
else if(dname.find("21")!=string::npos){ biny = 21;}else if(dname.find("22")!=string::npos){ biny = 22;}
if(full_path.find("missingMod_")!=string::npos){ // If we have missing hits ME

if(currDir.find("Shell_mO")!=string::npos || currDir.find("Shell_pO")!=string::npos){
if(currDir.find("Layer_1")!=string::npos){ biny = biny + 10;}
else if(currDir.find("Layer_2")!=string::npos){ biny = biny + 16;}
//Get the MEs that contain missing and valid hits
MonitorElement * missing = iGetter.get(full_path);

else if(currDir.find("Layer_3")!=string::npos){ biny = biny + 22;}
if (!missing) continue;
string new_path = full_path.replace(full_path.find("missing"),7,"valid");
MonitorElement * valid = iGetter.get(new_path);
if (!valid) continue;

}



int start=1;
//define start depending on p or m

if(currDir.find("Shell_m")!=string::npos){ start = 1;}else{ start = 5;}
for(int i=start; i<start+5;i++){
float hitEfficiency = -1.0;
float missingHits=0;
float validHits=0;
missingHits=missing->getBinContent(i);
validHits=valid->getBinContent(i);
if(validHits + missingHits > 0.) hitEfficiency = validHits / (validHits + missingHits);
if(currDir.find("Layer_1")!=string::npos){
HitEfficiency_L1 = iGetter.get("Pixel/Barrel/HitEfficiency_L1");
if(HitEfficiency_L1) HitEfficiency_L1->setBinContent(i, biny,(float)hitEfficiency);
float biny = 0;

if(dname.find("01")!=string::npos){ biny = 1;}else if(dname.find("02")!=string::npos){ biny = 2;}
else if(dname.find("03")!=string::npos){ biny = 3;}else if(dname.find("04")!=string::npos){ biny = 4;}
else if(dname.find("05")!=string::npos){ biny = 5;}else if(dname.find("06")!=string::npos){ biny = 6;}
else if(dname.find("07")!=string::npos){ biny = 7;}else if(dname.find("08")!=string::npos){ biny = 8;}
else if(dname.find("09")!=string::npos){ biny = 9;}else if(dname.find("10")!=string::npos){ biny = 10;}
else if(dname.find("11")!=string::npos){ biny = 11;}else if(dname.find("12")!=string::npos){ biny = 12;}
else if(dname.find("13")!=string::npos){ biny = 13;}else if(dname.find("14")!=string::npos){ biny = 14;}
else if(dname.find("15")!=string::npos){ biny = 15;}else if(dname.find("16")!=string::npos){ biny = 16;}
else if(dname.find("17")!=string::npos){ biny = 17;}else if(dname.find("18")!=string::npos){ biny = 18;}
else if(dname.find("19")!=string::npos){ biny = 19;}else if(dname.find("20")!=string::npos){ biny = 20;}
else if(dname.find("21")!=string::npos){ biny = 21;}else if(dname.find("22")!=string::npos){ biny = 22;}

if(currDir.find("Shell_mO")!=string::npos || currDir.find("Shell_pO")!=string::npos){
biny=-biny;
}
else if(currDir.find("Layer_2")!=string::npos){
HitEfficiency_L2 = iGetter.get("Pixel/Barrel/HitEfficiency_L2");
if(HitEfficiency_L2) HitEfficiency_L2->setBinContent(i, biny,(float)hitEfficiency);


for(int i=1; i<5;i++){
float hitEfficiency = -1.0;
float missingHits=0;
float validHits=0;
float binx=float(i);

if(currDir.find("Shell_m")!=string::npos) binx=-binx;

missingHits=missing->getBinContent(i);
validHits=valid->getBinContent(i);

if(validHits + missingHits > 0.) hitEfficiency = validHits / (validHits + missingHits);

if(currDir.find("Layer_1")!=string::npos){
HitEfficiency_L1 = iGetter.get("Pixel/Barrel/HitEfficiency_L1");
if(HitEfficiency_L1) HitEfficiency_L1->setBinContent(HitEfficiency_L1->getTH2F()->FindBin(binx, biny),(float)hitEfficiency);
}
else if(currDir.find("Layer_2")!=string::npos){
HitEfficiency_L2 = iGetter.get("Pixel/Barrel/HitEfficiency_L2");
if(HitEfficiency_L2) HitEfficiency_L2->setBinContent(HitEfficiency_L2->getTH2F()->FindBin(binx, biny),(float)hitEfficiency);
}
else if(currDir.find("Layer_3")!=string::npos){
HitEfficiency_L3 = iGetter.get("Pixel/Barrel/HitEfficiency_L3");
if(HitEfficiency_L3) HitEfficiency_L3->setBinContent(HitEfficiency_L3->getTH2F()->FindBin(binx, biny),(float)hitEfficiency);
}

}
else if(currDir.find("Layer_3")!=string::npos){
HitEfficiency_L3 = iGetter.get("Pixel/Barrel/HitEfficiency_L3");
if(HitEfficiency_L3) HitEfficiency_L3->setBinContent(i, biny,(float)hitEfficiency);
}

}

}
}
}//endifNOTUpgradeInBPix
else if (isUpgrade) {

else if (isUpgrade) { // This part will not work with Upgraded detector
vector<string> meVec = iGetter.getMEs();
for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
string full_path = currDir + "/" + (*it);
Expand Down Expand Up @@ -1940,7 +1938,7 @@ void SiPixelActionExecutor::fillEfficiency(DQMStore::IBooker & iBooker, DQMStore
HitEfficiency_Dp3 = iGetter.get("Pixel/Endcap/HitEfficiency_Dp3");
if(HitEfficiency_Dp3) HitEfficiency_Dp3->setBinContent(binx, biny, (float)hitEfficiency);
}
//std::cout<<"EFFI: "<<currDir<<" , x: "<<binx<<" , y: "<<biny<<std::endl;

}
}
}else{
Expand Down
Expand Up @@ -23,6 +23,7 @@
#include "DQMServices/Core/interface/DQMStore.h"
#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
#include "DataFormats/TrajectoryState/interface/LocalTrajectoryParameters.h"
#include "DataFormats/TrackerCommon/interface/TrackerTopology.h"

class SiPixelHitEfficiencyModule {
public:
Expand All @@ -31,7 +32,7 @@ class SiPixelHitEfficiencyModule {
~SiPixelHitEfficiencyModule();

void book(const edm::ParameterSet&, edm::EventSetup const &, DQMStore::IBooker &, int type=0, bool isUpgrade=false);
void fill(const LocalTrajectoryParameters& ltp, bool isHitValid, bool modon=true, bool ladon=true, bool layon=true, bool phion = true, bool bladeon=true, bool diskon=true, bool ringon=true);
void fill(const TrackerTopology * pTT, const LocalTrajectoryParameters& ltp, bool isHitValid, bool modon=true, bool ladon=true, bool layon=true, bool phion = true, bool bladeon=true, bool diskon=true, bool ringon=true);
void computeEfficiencies(bool modon=true, bool ladon=true, bool layon=true, bool phion = true, bool bladeon=true, bool diskon=true, bool ringon=true);
std::pair<double,double> eff(double nValid, double nMissing);

Expand Down
13 changes: 7 additions & 6 deletions DQM/SiPixelMonitorTrack/src/SiPixelHitEfficiencyModule.cc
Expand Up @@ -151,7 +151,7 @@ void SiPixelHitEfficiencyModule::book(const edm::ParameterSet& iConfig, edm::Eve
meValidYLad_ = iBooker.book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
meValidYLad_->setAxisTitle("# Valid hits in Y",1);

meValidModLad_ = iBooker.book1D("validMod_"+hisID,"# Valid hits on Module",20,1,21.);
meValidModLad_ = iBooker.book1D("validMod_"+hisID,"# Valid hits on Module",4,0.5,4.5);
meValidModLad_->setAxisTitle("# Valid hits on Module",1);

meValidAlphaLad_ = iBooker.book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
Expand All @@ -170,7 +170,7 @@ void SiPixelHitEfficiencyModule::book(const edm::ParameterSet& iConfig, edm::Eve
meMissingYLad_ = iBooker.book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
meMissingYLad_->setAxisTitle("# Missing hits in Y",1);

meMissingModLad_ = iBooker.book1D("missingMod_"+hisID,"# Missing hits on Module",20,1,21.);
meMissingModLad_ = iBooker.book1D("missingMod_"+hisID,"# Missing hits on Module",4,0.5,4.5);
meMissingModLad_->setAxisTitle("# Missing hits on Module",1);

meMissingAlphaLad_ = iBooker.book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
Expand Down Expand Up @@ -474,7 +474,7 @@ void SiPixelHitEfficiencyModule::book(const edm::ParameterSet& iConfig, edm::Eve
}


void SiPixelHitEfficiencyModule::fill(const LocalTrajectoryParameters& ltp, bool isHitValid, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {
void SiPixelHitEfficiencyModule::fill(const TrackerTopology * pTT, const LocalTrajectoryParameters& ltp, bool isHitValid, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {

bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
Expand All @@ -484,9 +484,10 @@ void SiPixelHitEfficiencyModule::fill(const LocalTrajectoryParameters& ltp, bool
float prediction_beta = atan2(localDir.z(), localDir.y());
float prediction_x = ltp.position().x();
float prediction_y = ltp.position().y();
//CS - this will probably break with isUpgrade
int imod = PXBDetId(DetId(id_)).module();


PixelBarrelName PBN= PixelBarrelName(DetId(id_), pTT);
int imod=PBN.moduleName();

if(isHitValid){
if(modon){
meValid_->Fill(0.5);
Expand Down
2 changes: 1 addition & 1 deletion DQM/SiPixelMonitorTrack/src/SiPixelHitEfficiencySource.cc
Expand Up @@ -641,7 +641,7 @@ float y=predTrajState.globalPosition().y();
++nmissing;

if (pxd!=theSiPixelStructure.end() && passedFiducial && (isHitValid || isHitMissing))
(*pxd).second->fill(ltp, isHitValid, modOn, ladOn, layOn, phiOn, bladeOn, diskOn, ringOn);
(*pxd).second->fill(pTT,ltp, isHitValid, modOn, ladOn, layOn, phiOn, bladeOn, diskOn, ringOn);

//}//end if (persistent hit exists and is pixel hit)

Expand Down

0 comments on commit e86bea8

Please sign in to comment.