45 #include "TObjString.h"
46 #include "TObjArray.h"
48 #include "TProfile2D.h"
83 void endJob()
override;
85 void readVertices(
double& minx,
double& maxx,
double& miny,
double& maxy);
87 void prepareStripNames();
88 void preparePixelNames();
96 void fillStripRemap();
128 TH2Poly* trackerMap{
nullptr};
143 if (!
input.isValid()) {
144 edm::LogError(
"TrackerRemapper") <<
"<GENERIC> not found... Aborting...\n";
148 typename T::const_iterator it;
149 for (it =
input->begin(); it !=
input->end(); ++it) {
150 auto id =
DetId(it->detId());
151 trackerMap->Fill(TString::Format(
"%ld", (
long)
id.rawId()), it->size());
169 m_opMode(iConfig.getParameter<
int>(
"opMode")),
170 m_analyzeMode(iConfig.getParameter<
int>(
"analyzeMode")) {
171 usesResource(
"TFileService");
204 edm::LogError(
"LogicError") <<
"Unrecognized analyze mode!" << std::endl;
207 throw cms::Exception(
"TrackerRemapper") <<
"Unrecognized operations mode!" << std::endl;
327 case AnalyzeData::RECHITS:
330 case AnalyzeData::DIGIS:
333 case AnalyzeData::CLUSTERS:
337 edm::LogError(
"LogicError") <<
"Unrecognized Analyze mode!" << std::endl;
353 LogInfo(
"Analyzer") <<
"reco::TrackCollection not found... Aborting...\n";
358 auto recHitsBegin =
track.recHitsBegin();
359 for (
unsigned i = 0;
i <
track.recHitsSize(); ++
i) {
360 auto recHit = *(recHitsBegin +
i);
365 unsigned subdetId =
id.subdetId();
372 trackerMap->Fill(TString::Format(
"%ld", (
long)
id.rawId()), 1);
382 double minx = 0xFFFFFF, maxx = -0xFFFFFF, miny = 0xFFFFFF, maxy = -0xFFFFFFF;
385 TObject* ghostObj =
fs->
make<TH2Poly>(
"ghost",
"ghost", -1, 1, -1, 1);
406 for (
auto pair :
m_bins) {
427 throw cms::Exception(
"TrackerRemapper") <<
"Error Reading File" << std::endl;
438 TObjArray*
array =
string.Tokenize(
" ");
441 for (
int i = 0;
i <
array->GetEntries(); ++
i) {
443 detid = static_cast<TObjString*>(
array->At(
i))->String().Atoll();
453 x[ix] = static_cast<TObjString*>(
array->At(
i))->String().Atof();
462 y[iy] = static_cast<TObjString*>(
array->At(
i))->String().Atof();
478 m_bins[detid] =
new TGraph(ix,
x,
y);
479 m_bins[detid]->SetName(TString::Format(
"%ld", detid));
480 m_bins[detid]->SetTitle(TString::Format(
"Module ID=%ld", detid));
495 for (
int layer = TkLayerMap::TkLayerEnum::TIB_L1;
layer <= TkLayerMap::TkLayerEnum::TECP_W9; ++
layer) {
505 for (
unsigned binx = 1; binx <= (unsigned)nchX; ++binx) {
506 for (
unsigned biny = 1; biny <= (unsigned)nchY; ++biny) {
511 double val = histHandle->GetBinContent(binx, biny);
521 rootFileHandle->Close();
530 if (!rootFileHandle) {
537 rootFileHandle->Close();
548 for (
auto&
i : pxb) {
552 long rawid =
id.
rawId();
554 int module =
tt->pxbModule(
id);
557 int signedOnlineModule = module - 4;
558 if (signedOnlineModule <= 0)
559 --signedOnlineModule;
562 int onlineShell = pixelBarrelName.
shell();
564 int signedOnlineLadder = ((onlineShell & 1) ? -pixelBarrelName.
ladderName() : pixelBarrelName.
ladderName());
568 unsigned nx = histHandle->GetNbinsX();
569 unsigned ny = histHandle->GetNbinsY();
571 unsigned binX = signedOnlineModule + ((nx + 1) >> 1);
572 unsigned binY = (signedOnlineLadder) + ((ny + 1) >> 1);
574 double val = histHandle->GetBinContent(binX, binY);
588 for (
auto&
i : pxf) {
593 int side =
tt->side(
id);
594 int disk =
tt->layer(
id);
596 long rawid =
id.rawId();
600 unsigned layer = pixelEndcapName.
ringName() - 1 + PixelLayerEnum::PXF_R1;
604 unsigned nx = histHandle->GetNbinsX();
605 unsigned ny = histHandle->GetNbinsY();
607 int onlineBlade = pixelEndcapName.
bladeName();
608 bool isInnerOnlineBlade = !(pixelEndcapName.
halfCylinder() & 1);
610 int signedOnlineBlade = (isInnerOnlineBlade) ? onlineBlade : -onlineBlade;
611 int signedDisk = (side == 2) ? disk : -disk;
612 int pannel = pixelEndcapName.
pannelName() - 1;
614 unsigned binX = signedDisk + ((nx + 1) >> 1);
615 unsigned binY = (signedOnlineBlade * 2) + (ny >> 1);
617 double val = histHandle->GetBinContent(binX, binY + pannel);
633 "Creates TH2Poly Strip Tracker maps by either analyzing the event or remapping exising DQM historams");
640 ->setComment(
"0 for Analyze, 1 for Remap");
643 ->setComment(
"1=Rechits, 2=Digis, 3=Clusters");