36 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 ) !=
nullptr) {
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_;
101 std::string htitle =
"SiStrip Certification for Good Detector Fraction";
106 for (std::map<std::string, SubDetMEs>::const_iterator it =
SubDetMEsMap.begin();
124 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
131 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
138 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
145 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
152 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
159 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
177 edm::LogInfo(
"SiStripDaqInfo") <<
"SiStripDaqInfo::endLuminosityBlock";
188 edm::LogInfo (
"SiStripCertificationInfo") <<
"SiStripCertificationInfo:: End Run";
199 edm::LogError(
"SiStripCertificationInfo") <<
" SiStripCertificationInfo::fillSiStripCertificationMEs : MEs missing ";
213 uint16_t nDetTot = 0;
214 uint16_t nFaultyTot = 0;
215 uint16_t nSToNTot = 0;
219 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
226 std::string bad_module_folder = mechanical_dir+
"/"+it->second.folder_name+
"/"+
"BadModuleList";
229 uint16_t ndet_subdet = 0;
230 uint16_t nfaulty_subdet = 0;
231 int nlayer = it->second.n_layer;
233 for (
int ilayer = 0; ilayer < nlayer; ilayer++) {
235 ndet_subdet += ndet_layer;
237 uint16_t nfaulty_layer = 0;
238 for (std::vector<MonitorElement *>::iterator im = faulty_detMEs.begin(); im != faulty_detMEs.end(); im++) {
240 if ((*im)->getIntValue() == 0)
continue;
241 uint32_t detId = atoi((*im)->getName().c_str());
242 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detId, tTopo,
false);
243 if (
abs(det_layer_pair.second) == ilayer+1) nfaulty_layer++;
246 nfaulty_subdet += nfaulty_layer;
247 float fraction_layer = -1.0;
248 if ( ndet_layer > 0) fraction_layer = 1 - ((nfaulty_layer*1.0)/ndet_layer);
251 if (ybin <= SiStripCertificationSummaryMap->getNbinsY()) {
254 float fraction_subdet = -1.0;
255 if (ndet_subdet > 0) fraction_subdet = 1 - ((nfaulty_subdet*1.0)/ndet_subdet);
257 std::string full_path = mechanical_dir.substr(0, mechanical_dir.find_last_of(
"/"))
258 +
"/EventInfo/reportSummaryContents/SiStrip_SToNFlag_"+name;
265 me->
Fill(fminf(fraction_subdet,ston_flg));
266 }
else me->
Fill(fraction_subdet);
267 nDetTot += ndet_subdet ;
268 nFaultyTot += nfaulty_subdet;
270 float fraction_global = -1.0;
271 if (nDetTot > 0) fraction_global = 1.0 - ((nFaultyTot*1.0)/nDetTot);
272 float ston_frac_global = 1.0;
273 if (nSToNTot > 0) ston_frac_global = sToNTot/nSToNTot;
283 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
285 it->second.det_fractionME->Reset();
297 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
299 it->second.det_fractionME->Reset();
300 it->second.det_fractionME->Fill(-1.0);
315 edm::LogError(
"SiStripCertificationInfo") <<
" SiStripCertificationInfo::fillSiStripCertificationMEsAtLumi : MEs missing ";
322 if (strip_dir.empty()) strip_dir =
"SiStrip";
325 float dcs_flag = 1.0;
326 float dqm_flag = 1.0;
327 for (std::map<std::string, SubDetMEs>::iterator it =
SubDetMEsMap.begin();
330 full_path = strip_dir +
"/EventInfo/DCSContents/SiStrip_" +
type;
333 full_path = strip_dir +
"/EventInfo/reportSummaryContents/SiStrip_" +
type;
336 it->second.det_fractionME->Reset();
337 it->second.det_fractionME->Fill(fminf(dqm_flag,dcs_flag));
341 full_path = strip_dir +
"/EventInfo/reportSummary";
344 full_path = strip_dir +
"/EventInfo/DCSSummary";
MonitorElement * SiStripCertification
void cd(void)
go to top directory (ie. root)
void fillSiStripCertificationMEsAtLumi()
#define DEFINE_FWK_MODULE(type)
void beginRun(edm::Run const &run, edm::EventSetup const &eSetup) override
Begin Run.
void beginJob() override
BeginJob.
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 fillSiStripCertificationMEs(edm::EventSetup const &eSetup)
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
uint32_t connectedNumber(const std::string &subDet, const uint16_t layer) const
void fillDummySiStripCertification()
bool sistripCertificationBooked_
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
std::map< std::string, SubDetMEs > SubDetMEsMap
std::vector< int > m_fed_in
double getFloatValue(void) const
SiStripCertificationInfo(const edm::ParameterSet &ps)
Constructor.
Abs< T >::type abs(const T &t)
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")
std::vector< MonitorElement * > getContents(const std::string &path) const
MonitorElement * det_fractionME
~SiStripCertificationInfo() override
Destructor.
void bookSiStripCertificationMEs()
void endRun(edm::Run const &run, edm::EventSetup const &eSetup) override
EndRun.
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup) override
End Of Luminosity.
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=false)
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)
T const * product() const
static void getTopFolderPath(DQMStore *dqm_store, std::string top_dir, std::string &path)
void setCurrentFolder(const std::string &fullpath)
void analyze(edm::Event const &, edm::EventSetup const &) override
Analyze.
const std::string & pwd(void) const
unsigned long long m_cacheID_