CMS 3D CMS Logo

SiStripHistoTitle.cc
Go to the documentation of this file.
1 
8 #include <iostream>
9 #include <iomanip>
10 
11 // -----------------------------------------------------------------------------
12 //
14  const sistrip::RunType& run_type,
15  const SiStripKey& key_object,
16  const std::string& extra_info)
17  : title_(""),
18  histoType_(histo_type),
19  runType_(run_type),
20  keyType_(sistrip::UNKNOWN_KEY),
21  keyValue_(sistrip::invalid32_),
22  granularity_(sistrip::UNKNOWN_GRAN),
23  channel_(sistrip::invalid_),
24  extraInfo_(extra_info) {
25  if (&dynamic_cast<const SiStripFedKey&>(key_object)) {
27  } else if (&dynamic_cast<const SiStripFecKey&>(key_object)) {
29  } else {
31  }
32  keyValue_ = key_object.key();
33  granularity_ = key_object.granularity();
34  channel_ = key_object.channel();
35  setTitle();
36 }
37 
38 // -----------------------------------------------------------------------------
39 //
41  const sistrip::RunType& run_type,
42  const sistrip::KeyType& key_type,
43  const uint32_t& key_value,
44  const sistrip::Granularity& gran,
45  const uint16_t& channel,
46  const std::string& extra_info)
47  : title_(""),
48  histoType_(histo_type),
49  runType_(run_type),
50  keyType_(key_type),
51  keyValue_(key_value),
52  granularity_(gran),
53  channel_(channel),
54  extraInfo_(extra_info) {
55  setTitle();
56 }
57 
58 // -----------------------------------------------------------------------------
59 //
61  : title_(histo_title),
62  histoType_(sistrip::UNDEFINED_HISTO_TYPE),
63  runType_(sistrip::UNDEFINED_RUN_TYPE),
64  keyType_(sistrip::UNDEFINED_KEY),
65  keyValue_(sistrip::invalid32_),
66  granularity_(sistrip::UNDEFINED_GRAN),
67  channel_(sistrip::invalid_),
68  extraInfo_("") {
69  extractTitle();
70 }
71 
72 // -----------------------------------------------------------------------------
73 //
75  std::stringstream title;
76 
77  // Append HistoType, RunType, KeyType and KeyValue
80  << std::setw(8) << std::hex << keyValue_ << std::dec << sistrip::sep_;
81 
82  // Append Granularity and channel number
84  if (channel_) {
85  title << channel_;
86  }
87 
88  // Append extra info
89  if (!extraInfo_.empty()) {
91  }
92 
93  title_ = title.str();
94 }
95 
96 // -----------------------------------------------------------------------------
97 //
99  std::string::size_type length = title_.length();
102  std::string::size_type siz = 0;
103 
104  // Extract HistoType
105  siz = title_.find(sistrip::sep_, position) - position;
108  position += title_.substr(position).find(histo_type) + histo_type.size() + (sizeof(sistrip::sep_) - 1);
110  position = 0;
111  } else if (position >= length) {
112  return;
113  }
114 
115  // Extract RunType
116  siz = title_.find(sistrip::sep_, position) - position;
119  position += title_.substr(position).find(run_type) + run_type.size() + (sizeof(sistrip::sep_) - 1);
120  if (position >= length) {
121  return;
122  }
123 
124  // Extract KeyType
125  siz = title_.find(sistrip::sep_, position) - position;
128  position += title_.substr(position).find(key_type) + key_type.size() + (sizeof(sistrip::hex_) - 1);
129  if (position >= length) {
130  return;
131  }
132 
133  // Extract KeyValue
134  siz = 8;
135  std::stringstream key;
136  key << title_.substr(position, siz);
137  key >> std::hex >> keyValue_;
138  position += siz + (sizeof(sistrip::sep_) - 1);
139  if (position >= length) {
140  return;
141  }
142 
143  // Extract Granularity
144  pos = title_.find(sistrip::sep_, position);
145  if (pos == std::string::npos || pos < position) {
146  siz = std::string::npos - position;
147  } else {
148  siz = pos - position;
149  }
152  position += title_.substr(position).find(gran) + gran.size();
153  if (position > length) {
154  return;
155  }
156 
157  // Extract Channel
158  pos = title_.find(sistrip::sep_, position);
159  if (pos == std::string::npos || pos < position) {
160  siz = std::string::npos - position;
161  } else {
162  siz = pos - position;
163  }
164  if (position == length || !siz) {
166  channel_ = 0;
167  } else if (granularity_ == sistrip::UNKNOWN_GRAN) {
169  }
170  } else {
171  std::stringstream chan;
172  chan << title_.substr(position, siz);
173  chan >> std::dec >> channel_;
174  }
175  position += siz + (sizeof(sistrip::sep_) - 1);
176  if (position >= length) {
177  return;
178  }
179 
180  // Extract ExtraInfo
181  extraInfo_ = title_.substr(position, std::string::npos - position);
182 }
183 
184 // -----------------------------------------------------------------------------
185 //
186 std::ostream& operator<<(std::ostream& os, const SiStripHistoTitle& title) {
187  std::stringstream ss;
188  ss << "[SiStripHistoTitle::print]" << std::endl
189  << " Title : " << title.title() << std::endl
190  << " HistoType : " << SiStripEnumsAndStrings::histoType(title.histoType()) << std::endl
191  << " RunType : " << SiStripEnumsAndStrings::runType(title.runType()) << std::endl
192  << " KeyType : " << SiStripEnumsAndStrings::keyType(title.keyType()) << std::endl
193  << " KeyValue (hex) : " << std::hex << std::setfill('0') << std::setw(8) << title.keyValue() << std::dec
194  << std::endl
195  << " Granularity : " << SiStripEnumsAndStrings::granularity(title.granularity()) << std::endl
196  << " Channel : " << title.channel() << std::endl
197  << " ExtraInfo : ";
198  if (!title.extraInfo().empty()) {
199  ss << "\"" << title.extraInfo() << "\"";
200  } else {
201  ss << "(none)";
202  }
203  os << ss.str();
204  return os;
205 }
sistrip::Granularity
Granularity
Definition: ConstantsForGranularity.h:60
Constants.h
Generic constants.
SiStripEnumsAndStrings::runType
static std::string runType(const sistrip::RunType &)
Definition: SiStripEnumsAndStrings.cc:39
SiStripKey.h
SiStripHistoTitle::channel_
uint16_t channel_
Definition: SiStripHistoTitle.h:101
operator<<
std::ostream & operator<<(std::ostream &os, const SiStripHistoTitle &title)
Definition: SiStripHistoTitle.cc:186
sistrip::invalid32_
static const uint32_t invalid32_
Definition: Constants.h:15
sistrip::KeyType
KeyType
Definition: ConstantsForKeyType.h:27
SiStripHistoTitle::setTitle
void setTitle()
Definition: SiStripHistoTitle.cc:74
SiStripEnumsAndStrings::histoType
static std::string histoType(const sistrip::HistoType &)
Definition: SiStripEnumsAndStrings.cc:517
SiStripKey::key
const uint32_t & key() const
Definition: SiStripKey.h:120
pos
Definition: PixelAliasList.h:18
SiStripHistoTitle::keyValue_
uint32_t keyValue_
Definition: SiStripHistoTitle.h:95
SiStripHistoTitle::histoType_
sistrip::HistoType histoType_
Definition: SiStripHistoTitle.h:86
sistrip::RunType
RunType
Definition: ConstantsForRunType.h:70
sistrip::UNKNOWN_GRAN
Definition: ConstantsForGranularity.h:62
SiStripKey::granularity
const sistrip::Granularity & granularity() const
Definition: SiStripKey.h:122
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
SiStripHistoTitle::granularity_
sistrip::Granularity granularity_
Definition: SiStripHistoTitle.h:98
sistrip::sep_
static const char sep_[]
Definition: ConstantsForDqm.h:18
SiStripKey::channel
const uint16_t & channel() const
Definition: SiStripKey.h:123
SiStripHistoTitle::runType_
sistrip::RunType runType_
Definition: SiStripHistoTitle.h:89
trigger::size_type
uint16_t size_type
Definition: TriggerTypeDefs.h:18
sistrip::UNKNOWN_KEY
Definition: ConstantsForKeyType.h:28
sistrip::UNDEFINED_HISTO_TYPE
Definition: ConstantsForHistoType.h:28
SiStripHistoTitle::extraInfo_
std::string extraInfo_
Definition: SiStripHistoTitle.h:104
SiStripEnumsAndStrings::granularity
static std::string granularity(const sistrip::Granularity &)
Definition: SiStripEnumsAndStrings.cc:265
SiStripFecKey.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiStripFedKey.h
sistrip::UNKNOWN_HISTO_TYPE
Definition: ConstantsForHistoType.h:27
sistrip::UNDEFINED_KEY
Definition: ConstantsForKeyType.h:29
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
SiStripHistoTitle::keyType_
sistrip::KeyType keyType_
Definition: SiStripHistoTitle.h:92
SiStripHistoTitle::extractTitle
void extractTitle()
Definition: SiStripHistoTitle.cc:98
sistrip::FEC_KEY
Definition: ConstantsForKeyType.h:31
sistrip::invalid_
static const uint16_t invalid_
Definition: Constants.h:16
overlapproblemtsosanalyzer_cfi.title
title
Definition: overlapproblemtsosanalyzer_cfi.py:7
SiStripHistoTitle::title_
std::string title_
Definition: SiStripHistoTitle.h:83
officialStyle.chan
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi....
Definition: officialStyle.py:106
SiStripEnumsAndStrings.h
sistrip::HistoType
HistoType
Definition: ConstantsForHistoType.h:26
sistrip::UNDEFINED_RUN_TYPE
Definition: ConstantsForRunType.h:95
SiStripHistoTitle.h
SiStripHistoTitle::title
const std::string & title() const
Definition: SiStripHistoTitle.h:109
SiStripHistoTitle
Utility class that holds histogram title.
Definition: SiStripHistoTitle.h:20
sistrip::hex_
static const char hex_[]
Definition: ConstantsForDqm.h:21
sistrip::FED_KEY
Definition: ConstantsForKeyType.h:30
sistrip
sistrip classes
Definition: SiStripQualityHelpers.h:14
SiStripHistoTitle::SiStripHistoTitle
SiStripHistoTitle()
Definition: SiStripHistoTitle.h:72
sistrip::UNDEFINED_GRAN
Definition: ConstantsForGranularity.h:61
crabWrapper.key
key
Definition: crabWrapper.py:19
SiStripKey
Base utility class that identifies a position within a logical structure of the strip tracker.
Definition: SiStripKey.h:23
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
SiStripEnumsAndStrings::keyType
static std::string keyType(const sistrip::KeyType &)
Definition: SiStripEnumsAndStrings.cc:231