35 edm::LogInfo(
"SiStripCertificationInfo") <<
"SiStripCertificationInfo::Deleting SiStripCertificationInfo ";
41 edm::LogInfo(
"SiStripCertificationInfo") <<
"SiStripCertificationInfo::Deleting SiStripCertificationInfo ";
55 edm::LogInfo (
"SiStripCertificationInfo") <<
"SiStripCertificationInfo:: Begining of Run";
67 if( eSetup.
find( recordKey ) != 0) {
73 std::vector<int> FedsInIds= sumFED->m_fed_in;
74 for(
unsigned int it = 0; it < FedsInIds.size(); ++it) {
75 int fedID = FedsInIds[it];
76 if(fedID>=siStripFedIdMin && fedID<=siStripFedIdMax) ++
nFEDConnected_;
100 std::string htitle =
"SiStrip Certification for Good Detector Fraction";
105 for (std::map<std::string, SubDetMEs>::const_iterator it =
SubDetMEsMap.begin();
123 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
130 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
137 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
144 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
151 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
158 SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
176 std::cout <<
"[SiStripCertificationInfo::endLuminosityBlock] " << std::endl;
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++) {
234 uint16_t ndet_layer =
detCabling_->connectedNumber(tag, ilayer+1);
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.size() == 0) 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 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()
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
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup)
End Of Luminosity.
std::map< std::string, SubDetMEs > SubDetMEsMap
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")
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
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)
static void getTopFolderPath(DQMStore *dqm_store, std::string top_dir, std::string &path)
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_