CMS 3D CMS Logo

Phase1PixelSummaryMap.h
Go to the documentation of this file.
1 #ifndef DQM_TRACKERREMAPPER_PHASE1PIXELSUMMARYMAP_H
2 #define DQM_TRACKERREMAPPER_PHASE1PIXELSUMMARYMAP_H
3 
4 #include "TArrow.h"
5 #include "TCanvas.h"
6 #include "TGraph.h"
7 #include "TH1.h"
8 #include "TH2.h"
9 #include "TH2Poly.h"
10 #include "TLatex.h"
11 #include "TStyle.h"
12 
13 #include <fmt/printf.h>
14 #include <fstream>
15 #include <memory>
16 #include <boost/tokenizer.hpp>
17 #include <boost/range/adaptor/indexed.hpp>
18 
22 
23 #ifndef PH1PSUMMARYMAP_STANDALONE
24 #define LOGDEBUG(x) LogDebug(x)
25 #define LOGINFO(x) edm::LogInfo(x)
26 #define LOGPRINT(x) edm::LogPrint(x)
27 #else
28 #define LOGDEBUG(x) std::cout << x << " Debug : "
29 #define LOGINFO(x) std::cout << x << " Info : "
30 #define LOGPRINT(x) std::cout << x << " : "
31 #endif
32 
33 using indexedCorners = std::map<unsigned int, std::pair<std::vector<float>, std::vector<float>>>;
34 
36  //============================================================================
37  // utility to tokenize std::string
38  //============================================================================
39  inline std::vector<std::string> tokenize(std::string line, char delimiter) {
40  // Vector of string to save tokens
41  std::vector<std::string> tokens;
42  std::stringstream check1(line);
43  std::string intermediate;
44 
45  // Tokenizing w.r.t. delimiter
46  while (getline(check1, intermediate, delimiter)) {
47  tokens.push_back(intermediate);
48  }
49  return tokens;
50  }
51 } // namespace Ph1PMapSummaryHelper
52 
53 /*--------------------------------------------------------------------
54 / Ancillary class to build pixel phase-1 tracker maps
55 /--------------------------------------------------------------------*/
57 public:
59  : m_option{option},
60  m_title{title},
61  m_zAxisTitle{zAxisTitle},
63  edm::FileInPath("Geometry/TrackerCommonData/data/PhaseI/trackerParameters.xml").fullPath())} {
64  // store the file in path for the corners (BPIX)
65  for (unsigned int i = 1; i <= 4; i++) {
66  m_cornersBPIX.push_back(edm::FileInPath(Form("DQM/SiStripMonitorClient/data/Geometry/vertices_barrel_%i", i)));
67  }
68 
69  // store the file in path for the corners (BPIX)
70  for (int j : {-3, -2, -1, 1, 2, 3}) {
71  m_cornersFPIX.push_back(edm::FileInPath(Form("DQM/SiStripMonitorClient/data/Geometry/vertices_forward_%i", j)));
72  }
73  }
74 
75  ~Phase1PixelSummaryMap() = default;
76 
77  void resetOption(const char* option);
78  void createTrackerBaseMap();
79  void printTrackerMap(TCanvas& canvas, const float topMargin = 0.02);
80  bool fillTrackerMap(unsigned int id, double value);
81 
82 protected:
83  void addNamedBins(edm::FileInPath geoFile, int tX, int tY, int sX, int sY, bool applyModuleRotation = false);
84 
85 private:
86  Option_t* m_option;
89 
91  std::shared_ptr<TH2Poly> m_BaseTrackerMap;
92  std::map<uint32_t, std::shared_ptr<TGraph>> bins;
93 
94  std::vector<edm::FileInPath> m_cornersBPIX;
95  std::vector<edm::FileInPath> m_cornersFPIX;
96 
97  static const unsigned int maxPxBarrel = 4;
98  static const unsigned int maxPxForward = 3;
99  const std::array<int, maxPxBarrel> barrelLadderShift = {{0, 14, 44, 90}};
100  const std::array<int, maxPxForward> forwardDiskXShift = {{25, 75, 125}};
101 
102  const int forwardDiskYShift = 45; //# to make +DISK on top in the 'strip-like' layout
103 
104  const int plotWidth = 3000;
105  const int plotHeight = 2000;
106 
108 };
109 
110 #endif
const std::string m_zAxisTitle
void resetOption(const char *option)
static const unsigned int maxPxBarrel
const std::array< int, maxPxBarrel > barrelLadderShift
std::map< uint32_t, std::shared_ptr< TGraph > > bins
const std::array< int, maxPxForward > forwardDiskXShift
std::vector< std::string > tokenize(std::string line, char delimiter)
~Phase1PixelSummaryMap()=default
static const unsigned int maxPxForward
void printTrackerMap(TCanvas &canvas, const float topMargin=0.02)
std::shared_ptr< TH2Poly > m_BaseTrackerMap
std::vector< edm::FileInPath > m_cornersBPIX
std::map< unsigned int, std::pair< std::vector< float >, std::vector< float > >> indexedCorners
Definition: value.py:1
void addNamedBins(edm::FileInPath geoFile, int tX, int tY, int sX, int sY, bool applyModuleRotation=false)
std::vector< edm::FileInPath > m_cornersFPIX
bool fillTrackerMap(unsigned int id, double value)
TrackerTopology fromTrackerParametersXMLFile(const std::string &xmlFileName)
def canvas(sub, attr)
Definition: svgfig.py:482
Phase1PixelSummaryMap(const char *option, std::string title, std::string zAxisTitle)