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();
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");
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
T getParameter(std::string const &) const
std::string m_stripBaseDir
int ringName() const
ring Id
edm::EDGetTokenT< reco::TrackCollection > rechitSrcToken
std::string m_stripRemapFile
const DetContainer & detsPXB() const
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterSrcToken
#define DEFINE_FWK_MODULE(type)
int bladeName() const
blade id
std::string m_pixelRemapFile
void analyzeGeneric(const edm::Event &iEvent, const edm::EDGetTokenT< T > &src)
std::map< unsigned, std::string > m_stripHistnameMap
const DetContainer & detsPXF() const
TrackerRemapper(const edm::ParameterSet &)
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
Log< level::Error, false > LogError
static constexpr TimeType INVALID
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
std::map< unsigned, std::string > m_pixelHistnameMap
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
constexpr std::array< uint8_t, layerIndexSize > layer
static std::string const input
std::vector< const GeomDet * > DetContainer
void fillEndcapRemap(TFile *rootFileHandle, const TrackerGeometry *theTrackerGeometry, const TrackerTopology *tt)
std::string m_pixelDesiredHistogramDisk
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
HalfCylinder halfCylinder() const
DetId getDetFromBin(int layer, int ix, int iy) const
std::string m_stripDesiredHistogram
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
bool getData(T &iHolder) const
void fillPixelRemap(const TrackerGeometry *theTrackerGeometry, const TrackerTopology *tt)
~TrackerRemapper() override
TDirectory * getBareDirectory(const std::string &subdir="") const
DetId geographicalId() const
The label of this GeomDet.
const TkDetMap * m_tkdetmap
edm::EDGetTokenT< edmNew::DetSetVector< SiStripDigi > > digiSrcToken
Log< level::Info, false > LogInfo
const edm::ParameterSet & iConfig
auto const & tracks
cannot be loose
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const edm::ESGetToken< TkDetMap, TrackerTopologyRcd > tkDetMapToken_
void getComponents(int layer, int &nchX, double &lowX, double &highX, int &nchY, double &lowY, double &highY) const
void analyzeRechits(const edm::Event &iEvent, const edm::EDGetTokenT< reco::TrackCollection > &src)
constexpr uint32_t rawId() const
get the raw id
void fillBarrelRemap(TFile *rootFileHandle, const TrackerGeometry *theTrackerGeometry, const TrackerTopology *tt)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::Service< TFileService > fs
void analyze(const edm::Event &, const edm::EventSetup &) override
bool isPixel(HitType hitType)
int ladderName() const
ladder id (index in phi)
T * make(const Args &...args) const
make new ROOT object
void readVertices(double &minx, double &maxx, double &miny, double &maxy)
std::map< unsigned, std::string > m_analyzeModeNameMap
std::map< long, TGraph * > m_bins
std::string m_pixelDesiredHistogramBarrel
int pannelName() const
pannel id
std::string m_pixelBaseDir
std::vector< unsigned > m_detIdVector