35 edm::LogInfo(
"SiStripCertificationInfo") <<
"SiStripCertificationInfo::Deleting SiStripCertificationInfo ";
42 edm::LogInfo(
"SiStripCertificationInfo") <<
"SiStripCertificationInfo::Deleting SiStripCertificationInfo ";
56 edm::LogInfo (
"SiStripCertificationInfo") <<
"SiStripCertificationInfo:: Begining of Run";
68 if( eSetup.
find( recordKey ) != 0) {
74 std::vector<int> FedsInIds= sumFED->m_fed_in;
75 for(
unsigned int it = 0; it < FedsInIds.size(); ++it) {
76 int fedID = FedsInIds[it];
77 if(fedID>=siStripFedIdMin && fedID<=siStripFedIdMax) ++
nFEDConnected_;
103 std::string htitle =
"SiStrip Certification for Good Detector Fraction";
108 for (std::map<std::string, SubDetMEs>::const_iterator it =
SubDetMEsMap.begin();
126 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
133 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
140 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
147 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
154 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
161 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
177 if (tracking_dir.size() > 0) {
187 TrackingMEsMap.insert(std::pair<std::string,MonitorElement*>(type,me));
191 TrackingMEsMap.insert(std::pair<std::string,MonitorElement*>(type,me));
195 TrackingMEsMap.insert(std::pair<std::string,MonitorElement*>(type,me));
211 edm::LogInfo(
"SiStripDaqInfo") <<
"SiStripDaqInfo::endLuminosityBlock";
223 edm::LogInfo (
"SiStripCertificationInfo") <<
"SiStripCertificationInfo:: End Run";
235 edm::LogError(
"SiStripCertificationInfo") <<
" SiStripCertificationInfo::fillTrackingCertificationMEs : MEs missing ";
240 if (tk_dir.size() == 0) {
245 std::vector<MonitorElement*> all_mes =
dqmStore_->
getContents(tk_dir+
"/EventInfo/reportSummaryContents");
247 for (std::vector<MonitorElement *>::const_iterator it = all_mes.begin();
248 it!= all_mes.end(); it++) {
254 for (std::map<std::string, MonitorElement*>::const_iterator it =
TrackingMEsMap.begin();
257 if (name.find(type) != std::string::npos) {
258 it->second->Fill(val);
272 edm::LogError(
"SiStripCertificationInfo") <<
" SiStripCertificationInfo::fillSiStripCertificationMEs : MEs missing ";
286 uint16_t nDetTot = 0;
287 uint16_t nFaultyTot = 0;
288 uint16_t nSToNTot = 0;
292 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
299 std::string bad_module_folder = mechanical_dir+
"/"+it->second.folder_name+
"/"+
"BadModuleList";
302 uint16_t ndet_subdet = 0;
303 uint16_t nfaulty_subdet = 0;
304 int nlayer = it->second.n_layer;
306 for (
int ilayer = 0; ilayer < nlayer; ilayer++) {
307 uint16_t ndet_layer =
detCabling_->connectedNumber(tag, ilayer+1);
308 ndet_subdet += ndet_layer;
310 uint16_t nfaulty_layer = 0;
311 for (std::vector<MonitorElement *>::iterator im = faulty_detMEs.begin(); im != faulty_detMEs.end(); im++) {
313 if ((*im)->getIntValue() == 0)
continue;
314 uint32_t detId = atoi((*im)->getName().c_str());
315 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detId, tTopo,
false);
316 if (
abs(det_layer_pair.second) == ilayer+1) nfaulty_layer++;
319 nfaulty_subdet += nfaulty_layer;
320 float fraction_layer = -1.0;
321 if ( ndet_layer > 0) fraction_layer = 1 - ((nfaulty_layer*1.0)/ndet_layer);
324 if (ybin <= SiStripCertificationSummaryMap->getNbinsY()) {
327 float fraction_subdet = -1.0;
328 if (ndet_subdet > 0) fraction_subdet = 1 - ((nfaulty_subdet*1.0)/ndet_subdet);
330 std::string full_path = mechanical_dir.substr(0, mechanical_dir.find_last_of(
"/"))
331 +
"/EventInfo/reportSummaryContents/SiStrip_SToNFlag_"+name;
338 me->
Fill(fminf(fraction_subdet,ston_flg));
339 }
else me->
Fill(fraction_subdet);
340 nDetTot += ndet_subdet ;
341 nFaultyTot += nfaulty_subdet;
343 float fraction_global = -1.0;
344 if (nDetTot > 0) fraction_global = 1.0 - ((nFaultyTot*1.0)/nDetTot);
345 float ston_frac_global = 1.0;
346 if (nSToNTot > 0) ston_frac_global = sToNTot/nSToNTot;
356 for (std::map<std::string, MonitorElement*>::const_iterator it =
TrackingMEsMap.begin();
369 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
371 it->second.det_fractionME->Reset();
383 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
385 it->second.det_fractionME->Reset();
386 it->second.det_fractionME->Fill(-1.0);
403 for (std::map<std::string, MonitorElement*>::const_iterator it =
TrackingMEsMap.begin();
405 it->second->Fill(-1.0);
415 edm::LogError(
"SiStripCertificationInfo") <<
" SiStripCertificationInfo::fillSiStripCertificationMEsAtLumi : MEs missing ";
422 if (strip_dir.size() == 0) strip_dir =
"SiStrip";
425 float dcs_flag = 1.0;
426 float dqm_flag = 1.0;
427 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
430 full_path = strip_dir +
"/EventInfo/DCSContents/SiStrip_" +
type;
433 full_path = strip_dir +
"/EventInfo/reportSummaryContents/SiStrip_" +
type;
436 it->second.det_fractionME->Reset();
437 it->second.det_fractionME->Fill(fminf(dqm_flag,dcs_flag));
441 full_path = strip_dir +
"/EventInfo/reportSummary";
444 full_path = strip_dir +
"/EventInfo/DCSSummary";
const std::string & getName(void) const
get name of ME
MonitorElement * TrackingCertification
void bookTrackingCertificationMEs()
MonitorElement * SiStripCertification
void cd(void)
go to top directory (ie. root)
void fillSiStripCertificationMEsAtLumi()
#define DEFINE_FWK_MODULE(type)
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void analyze(edm::Event const &, edm::EventSetup const &)
Analyze.
void fillSiStripCertificationMEs(edm::EventSetup const &eSetup)
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=0)
void fillDummySiStripCertification()
void fillDummyTrackingCertification()
bool sistripCertificationBooked_
std::map< std::string, MonitorElement * > TrackingMEsMap
MonitorElement * bookFloat(const char *name)
Book float.
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
int getNbinsY(void) const
get # of bins in Y-axis
bool trackingCertificationBooked_
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup)
End Of Luminosity.
std::map< std::string, SubDetMEs > SubDetMEsMap
void fillTrackingCertificationMEs(edm::EventSetup const &eSetup)
double getFloatValue(void) const
SiStripCertificationInfo(const edm::ParameterSet &ps)
Constructor.
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. "my/long/dir/my_histo")
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::vector< MonitorElement * > getContents(const std::string &path) const
MonitorElement * det_fractionME
void bookSiStripCertificationMEs()
virtual ~SiStripCertificationInfo()
Destructor.
void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
EndRun.
void beginRun(edm::Run const &run, edm::EventSetup const &eSetup)
Begin Run.
T const * product() const
void resetTrackingCertificationMEs()
MonitorElement * SiStripCertificationSummaryMap
void resetSiStripCertificationMEs()
int getNbinsX(void) const
get # of bins in X-axis
edm::ESHandle< SiStripDetCabling > detCabling_
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
static bool goToDir(DQMStore *dqm_store, std::string name)
void setCurrentFolder(const std::string &fullpath)
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
const std::string & pwd(void) const
unsigned long long m_cacheID_
static void getTopFolderPath(DQMStore *dqm_store, std::string type, std::string &path)