CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripTrackerMapCreator Class Reference

#include <SiStripTrackerMapCreator.h>

Public Member Functions

void create (const edm::ParameterSet &tkmapPset, const edm::ESHandle< SiStripFedCabling > &fedcabling, DQMStore *dqm_store, std::string &htype)
 
void createForOffline (const edm::ParameterSet &tkmapPset, DQMStore *dqm_store, std::string &htype)
 
bool readConfiguration ()
 
 SiStripTrackerMapCreator ()
 
 ~SiStripTrackerMapCreator ()
 

Private Member Functions

uint16_t getDetectorFlagAndComment (DQMStore *dqm_store, uint32_t det_id, std::ostringstream &comment)
 
void paintTkMapFromAlarm (uint32_t det_id, DQMStore *dqm_store)
 
void paintTkMapFromHistogram (DQMStore *dqm_store, MonitorElement *me, std::string &map_type)
 
void setTkMapFromHistogram (DQMStore *dqm_store, std::string &htype)
 
void setTkMapRange (std::string &map_type)
 

Private Attributes

int nDet
 
TkDetMaptkDetMap_
 
float tkMapMax
 
float tkMapMin
 
std::string tkMapName_
 
TrackerMaptrackerMap_
 

Detailed Description

Definition at line 19 of file SiStripTrackerMapCreator.h.

Constructor & Destructor Documentation

SiStripTrackerMapCreator::SiStripTrackerMapCreator ( )

Definition at line 15 of file SiStripTrackerMapCreator.cc.

References cmsCodeRules.cppFunctionSkipper::operator, tkDetMap_, and trackerMap_.

15  {
16  trackerMap_ = 0;
17  if(!edm::Service<TkDetMap>().isAvailable()){
18  edm::LogError("TkHistoMap") <<
19  "\n------------------------------------------"
20  "\nUnAvailable Service TkHistoMap: please insert in the configuration file an instance like"
21  "\n\tprocess.TkDetMap = cms.Service(\"TkDetMap\")"
22  "\n------------------------------------------";
23  }
25 }
SiStripTrackerMapCreator::~SiStripTrackerMapCreator ( )

Definition at line 29 of file SiStripTrackerMapCreator.cc.

References trackerMap_.

29  {
30  if (trackerMap_) delete trackerMap_;
31 }

Member Function Documentation

void SiStripTrackerMapCreator::create ( const edm::ParameterSet tkmapPset,
const edm::ESHandle< SiStripFedCabling > &  fedcabling,
DQMStore dqm_store,
std::string &  htype 
)

Definition at line 35 of file SiStripTrackerMapCreator.cc.

References TrackerMap::fill_all_blank(), TrackerMap::fillc_all_blank(), nDet, paintTkMapFromAlarm(), TrackerMap::printonline(), TrackerMap::setTitle(), setTkMapFromHistogram(), setTkMapRange(), tkMapMax, tkMapMin, and trackerMap_.

Referenced by SiStripActionExecutor::createTkMap().

36  {
37 
38  if (trackerMap_) delete trackerMap_;
39  trackerMap_ = new TrackerMap(tkmapPset, fedcabling);
40  std::string tmap_title = " Tracker Map from " + map_type;
41  trackerMap_->setTitle(tmap_title);
42 
43  nDet = 0;
44  tkMapMax = 0.0;
45  tkMapMin = 0.0;
46 
47  if (map_type == "QTestAlarm") {
49  const std::vector<uint16_t>& feds = fedcabling->feds();
50  uint32_t detId_save = 0;
51  for(std::vector<unsigned short>::const_iterator ifed = feds.begin();
52  ifed < feds.end(); ifed++){
53  const std::vector<FedChannelConnection> fedChannels = fedcabling->connections( *ifed );
54  for(std::vector<FedChannelConnection>::const_iterator iconn = fedChannels.begin(); iconn < fedChannels.end(); iconn++){
55 
56  uint32_t detId = iconn->detId();
57  if (detId == 0 || detId == 0xFFFFFFFF) continue;
58  if (detId_save != detId) {
59  detId_save = detId;
60  paintTkMapFromAlarm(detId, dqm_store);
61  }
62  }
63  }
64  } else {
66  setTkMapFromHistogram(dqm_store, map_type);
67  setTkMapRange(map_type);
68  }
70  delete trackerMap_;
71  trackerMap_ = 0;
72 }
void fillc_all_blank()
Definition: TrackerMap.cc:2503
void setTkMapFromHistogram(DQMStore *dqm_store, std::string &htype)
void setTitle(std::string s)
Definition: TrackerMap.h:71
void fill_all_blank()
Definition: TrackerMap.cc:2511
void paintTkMapFromAlarm(uint32_t det_id, DQMStore *dqm_store)
void printonline()
Definition: TrackerMap.cc:2643
void setTkMapRange(std::string &map_type)
void SiStripTrackerMapCreator::createForOffline ( const edm::ParameterSet tkmapPset,
DQMStore dqm_store,
std::string &  htype 
)

Definition at line 76 of file SiStripTrackerMapCreator.cc.

References TrackerMap::save(), TrackerMap::setTitle(), setTkMapFromHistogram(), setTkMapRange(), tkMapMax, tkMapMin, and trackerMap_.

Referenced by SiStripActionExecutor::createOfflineTkMap().

77  {
78  if (trackerMap_) delete trackerMap_;
79  trackerMap_ = new TrackerMap(tkmapPset);
80 
81  std::string tmap_title = " Tracker Map from " + map_type;
82  trackerMap_->setTitle(tmap_title);
83 
84  setTkMapFromHistogram(dqm_store, map_type);
85  setTkMapRange(map_type);
86 
87  trackerMap_->save(true, tkMapMin,tkMapMax, map_type+".svg");
88  trackerMap_->save(true, tkMapMin,tkMapMax, map_type+".png",4500,2400);
89  delete trackerMap_;
90  trackerMap_ = 0;
91 }
void setTkMapFromHistogram(DQMStore *dqm_store, std::string &htype)
void setTitle(std::string s)
Definition: TrackerMap.h:71
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
Definition: TrackerMap.cc:632
void setTkMapRange(std::string &map_type)
uint16_t SiStripTrackerMapCreator::getDetectorFlagAndComment ( DQMStore dqm_store,
uint32_t  det_id,
std::ostringstream &  comment 
)
private

Definition at line 214 of file SiStripTrackerMapCreator.cc.

References DQMStore::dirExists(), MonitorElement::DQM_KIND_INT, DQMStore::get(), SiStripUtility::getBadModuleStatus(), MonitorElement::getIntValue(), SiStripFolderOrganizer::getSubDetFolder(), MonitorElement::kind(), argparse::message, and DQMStore::pwd().

Referenced by paintTkMapFromAlarm(), and paintTkMapFromHistogram().

214  {
215  comment << " DetId " << det_id << " : ";
216  uint16_t flag = 0;
217 
218  SiStripFolderOrganizer folder_organizer;
219  std::string subdet_folder, badmodule_folder;
220 
221  folder_organizer.getSubDetFolder(det_id, subdet_folder);
222  if (dqm_store->dirExists(subdet_folder)){
223  badmodule_folder = subdet_folder + "/BadModuleList";
224  } else {
225  badmodule_folder = dqm_store->pwd() + "/BadModuleList";
226  }
227  if (!dqm_store->dirExists(badmodule_folder)) return flag;
228 
229  std::ostringstream badmodule_path;
230  badmodule_path << badmodule_folder << "/" << det_id;
231 
232  MonitorElement* bad_module_me = dqm_store->get(badmodule_path.str());
233  if (bad_module_me && bad_module_me->kind() == MonitorElement::DQM_KIND_INT) {
234  flag = bad_module_me->getIntValue();
235  std::string message;
236  SiStripUtility::getBadModuleStatus(flag, message);
237  comment << message.c_str();
238  }
239  return flag;
240 }
long int flag
Definition: mlp_lapack.h:47
void getSubDetFolder(const uint32_t &detid, std::string &folder_name)
static void getBadModuleStatus(uint16_t flag, std::string &message)
Kind kind(void) const
Get the type of the monitor element.
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:296
int64_t getIntValue(void) const
string message
Definition: argparse.py:126
const std::string & pwd(void) const
Definition: DQMStore.cc:204
#define comment(par)
Definition: vmac.h:162
void SiStripTrackerMapCreator::paintTkMapFromAlarm ( uint32_t  det_id,
DQMStore dqm_store 
)
private

Definition at line 95 of file SiStripTrackerMapCreator.cc.

References comment, TrackerMap::fillc(), getDetectorFlagAndComment(), SiStripUtility::getDetectorStatusColor(), TrackerMap::setText(), and trackerMap_.

Referenced by create().

95  {
96 
97  std::ostringstream comment;
98  uint16_t flag = 0;
99  flag = getDetectorFlagAndComment(dqm_store, det_id, comment);
100 
101  int rval, gval, bval;
102  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
103  trackerMap_->setText(det_id, comment.str());
104  trackerMap_->fillc(det_id, rval, gval, bval);
105 }
long int flag
Definition: mlp_lapack.h:47
static void getDetectorStatusColor(int status, int &rval, int &gval, int &bval)
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:48
unsigned long long int rval
Definition: vlib.h:23
void setText(int idmod, std::string s)
Definition: TrackerMap.cc:2559
uint16_t getDetectorFlagAndComment(DQMStore *dqm_store, uint32_t det_id, std::ostringstream &comment)
#define comment(par)
Definition: vmac.h:162
void SiStripTrackerMapCreator::paintTkMapFromHistogram ( DQMStore dqm_store,
MonitorElement me,
std::string &  map_type 
)
private

Definition at line 157 of file SiStripTrackerMapCreator.cc.

References comment, MonitorElement::DQM_KIND_TPROFILE2D, TrackerMap::fill_current_val(), TrackerMap::fillc(), MonitorElement::getBinContent(), getDetectorFlagAndComment(), SiStripUtility::getDetectorStatusColor(), TkDetMap::getDetsForLayer(), TkDetMap::getLayerNum(), MonitorElement::getName(), MonitorElement::getTProfile2D(), TkDetMap::getXY(), TkLayerMap::XYbin::ix, TkLayerMap::XYbin::iy, MonitorElement::kind(), mergeVDriftHistosByStation::name, nDet, TrackerMap::setText(), tkDetMap_, tkMapMax, and trackerMap_.

Referenced by setTkMapFromHistogram().

157  {
158  std::string name = me->getName();
159  std::string lname = name.substr(name.find("TkHMap_")+7);
160  lname = lname.substr(lname.find("_T")+1);
161  std::vector<uint32_t> layer_detids;
162  tkDetMap_->getDetsForLayer(tkDetMap_->getLayerNum(lname), layer_detids);
163  for (std::vector<uint32_t>::const_iterator idet = layer_detids.begin(); idet != layer_detids.end(); idet++) {
164  uint32_t det_id= (*idet);
165  if (det_id <= 0) continue;
166  nDet++;
167  std::ostringstream comment;
168  uint32_t flag = 0;
169  flag = getDetectorFlagAndComment(dqm_store, det_id, comment);
170  trackerMap_->setText(det_id, comment.str());
171  const TkLayerMap::XYbin& xyval = tkDetMap_->getXY(det_id);
172  float fval = 0.0;
173  if ( (name.find("NumberOfOfffTrackCluster") != std::string::npos) ||
174  (name.find("NumberOfOnTrackCluster") != std::string::npos) ) {
176  TProfile2D* tp = me->getTProfile2D() ;
177  fval = tp->GetBinEntries(tp->GetBin(xyval.ix, xyval.iy)) * tp->GetBinContent(xyval.ix, xyval.iy);
178  }
179  } else fval = me->getBinContent(xyval.ix, xyval.iy);
180  if (htype == "QTestAlarm") {
181  int rval, gval, bval;
182  SiStripUtility::getDetectorStatusColor(flag, rval, gval, bval);
183  trackerMap_->fillc(det_id, rval, gval, bval);
184  } else {
185  tkMapMax += fval;
186  if (fval == 0.0) trackerMap_->fillc(det_id,255, 255, 255);
187  else {
188  trackerMap_->fill_current_val(det_id, fval);
189  }
190  }
191  }
192 }
const std::string & getName(void) const
get name of ME
long int flag
Definition: mlp_lapack.h:47
TProfile2D * getTProfile2D(void) const
static void getDetectorStatusColor(int status, int &rval, int &gval, int &bval)
int getLayerNum(std::string &in)
Definition: TkDetMap.cc:759
void getDetsForLayer(int layer, std::vector< uint32_t > &output)
Definition: TkDetMap.cc:677
Kind kind(void) const
Get the type of the monitor element.
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:48
unsigned long long int rval
Definition: vlib.h:23
double getBinContent(int binx) const
get content of bin (1-D)
const TkLayerMap::XYbin & getXY(uint32_t &)
Definition: TkDetMap.cc:633
void fill_current_val(int idmod, float current_val)
Definition: TrackerMap.cc:2521
void setText(int idmod, std::string s)
Definition: TrackerMap.cc:2559
uint16_t getDetectorFlagAndComment(DQMStore *dqm_store, uint32_t det_id, std::ostringstream &comment)
#define comment(par)
Definition: vmac.h:162
bool SiStripTrackerMapCreator::readConfiguration ( )
void SiStripTrackerMapCreator::setTkMapFromHistogram ( DQMStore dqm_store,
std::string &  htype 
)
private

Definition at line 109 of file SiStripTrackerMapCreator.cc.

References DQMStore::cd(), DQMStore::dirExists(), DQMStore::getContents(), DQMStore::getSubdirs(), SiStripUtility::goToDir(), mergeVDriftHistosByStation::name, nDet, paintTkMapFromHistogram(), DQMStore::pwd(), tkMapMax, and tkMapMin.

Referenced by create(), and createForOffline().

109  {
110  dqm_store->cd();
111 
112  std::string mdir = "MechanicalView";
113  if (!SiStripUtility::goToDir(dqm_store, mdir)) return;
114  std::string mechanicalview_dir = dqm_store->pwd();
115 
116  std::vector<std::string> subdet_folder;
117  subdet_folder.push_back("TIB");
118  subdet_folder.push_back("TOB");
119  subdet_folder.push_back("TEC/side_1");
120  subdet_folder.push_back("TEC/side_2");
121  subdet_folder.push_back("TID/side_1");
122  subdet_folder.push_back("TID/side_2");
123 
124  nDet = 0;
125  tkMapMax = 0.0;
126  tkMapMin = 0.0;
127 
128  for (std::vector<std::string>::const_iterator it = subdet_folder.begin(); it != subdet_folder.end(); it++) {
129  std::string dname = mechanicalview_dir + "/" + (*it);
130  if (!dqm_store->dirExists(dname)) continue;
131  dqm_store->cd(dname);
132  std::vector<std::string> layerVec = dqm_store->getSubdirs();
133  for (std::vector<std::string>::const_iterator iLayer = layerVec.begin(); iLayer != layerVec.end(); iLayer++) {
134  if ((*iLayer).find("BadModuleList") !=std::string::npos) continue;
135  std::vector<MonitorElement*> meVec = dqm_store->getContents((*iLayer));
136  MonitorElement* tkhmap_me = 0;
137  std::string name;
138  for (std::vector<MonitorElement*>::const_iterator itkh = meVec.begin(); itkh != meVec.end(); itkh++) {
139  name = (*itkh)->getName();
140  if (name.find("TkHMap") == std::string::npos) continue;
141  if (htype == "QTestAlarm" ){
142  tkhmap_me = (*itkh);
143  break;
144  } else if (name.find(htype) != std::string::npos) {
145  tkhmap_me = (*itkh);
146  break;
147  }
148  }
149  if (tkhmap_me != 0) {
150  paintTkMapFromHistogram(dqm_store,tkhmap_me, htype);
151  }
152  }
153  dqm_store->cd(mechanicalview_dir);
154  }
155  dqm_store->cd();
156 }
std::vector< std::string > getSubdirs(void) const
Definition: DQMStore.cc:1216
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
void paintTkMapFromHistogram(DQMStore *dqm_store, MonitorElement *me, std::string &map_type)
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1294
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:296
static bool goToDir(DQMStore *dqm_store, std::string name)
const std::string & pwd(void) const
Definition: DQMStore.cc:204
void SiStripTrackerMapCreator::setTkMapRange ( std::string &  map_type)
private

Definition at line 196 of file SiStripTrackerMapCreator.cc.

References nDet, TrackerMap::setRange(), tkMapMax, tkMapMin, and trackerMap_.

Referenced by create(), and createForOffline().

196  {
197  tkMapMin = 0.0;
198  if (tkMapMax == 0.0) {
199  if (map_type.find("FractionOfBadChannels") != std::string::npos) tkMapMax = 1.0;
200  else if (map_type.find("NumberOfCluster") != std::string::npos) tkMapMax = 0.01;
201  else if (map_type.find("NumberOfDigi") != std::string::npos) tkMapMax = 0.6;
202  else if (map_type.find("NumberOfOffTrackCluster") != std::string::npos) tkMapMax = 100.0;
203  else if (map_type.find("NumberOfOnTrackCluster") != std::string::npos) tkMapMax = 50.0;
204  else if (map_type.find("StoNCorrOnTrack") != std::string::npos) tkMapMax = 200.0;
205  } else {
206  tkMapMax = tkMapMax/nDet*1.0;
207  tkMapMax = tkMapMax * 2.5;
208  }
210 }
void setRange(float min, float max)
Definition: TrackerMap.h:72

Member Data Documentation

int SiStripTrackerMapCreator::nDet
private
TkDetMap* SiStripTrackerMapCreator::tkDetMap_
private

Definition at line 47 of file SiStripTrackerMapCreator.h.

Referenced by paintTkMapFromHistogram(), and SiStripTrackerMapCreator().

float SiStripTrackerMapCreator::tkMapMax
private
float SiStripTrackerMapCreator::tkMapMin
private
std::string SiStripTrackerMapCreator::tkMapName_
private

Definition at line 42 of file SiStripTrackerMapCreator.h.

TrackerMap* SiStripTrackerMapCreator::trackerMap_
private