193 if (m_outputFile.size() != 0) {
194 std::cout <<
"L1T Monitoring histograms will be saved to " << m_outputFile.c_str() << std::endl;
198 if (disable) {m_outputFile =
"";}
200 if (dbe !=
NULL) {dbe->setCurrentFolder(
"L1T/L1TSync");}
212 if (m_verbose){
cout <<
"[L1TSync_Harvest] Called beginJob." << endl;}
220 dbe->
rmdir(
"L1T/L1TSync");
229 if (m_verbose){
cout <<
"[L1TSync_Harvest] Called endJob." << endl;}
231 if (m_outputFile.size() != 0 && dbe)
232 dbe->save(m_outputFile);
319 if (m_verbose){
cout <<
"[L1TSync_Harvest] Called beginLuminosityBlock." << endl;}
326 cout <<
"[L1TSync_Harvest] None consecutive: doFractionInSync() - LAST="
330 doFractionInSync(
true,
false);
338 for(map<string,string>::const_iterator
i=m_selectedTriggers.begin() ;
i!=m_selectedTriggers.end() ;
i++){
340 string theTriggerAlias = (*i).second;
341 if(m_certFirstLS[theTriggerAlias]==0){m_certFirstLS[theTriggerAlias] = m_currentLS;}
347 m_currentLSValid =
true;
357 if(m_verbose){
cout <<
"[L1TSync_Harvest] Called endLuminosityBlock." << endl;}
360 cout <<
"[L1TSync_Harvest] m_currentLSValid : " << m_currentLSValid << endl;
361 cout <<
"[L1TSync_Harvest] m_beamConfig.isValid(): " << m_beamConfig.isValid() << endl;
364 for(map<string,string>::const_iterator
i=m_selectedTriggers.begin() ;
i!=m_selectedTriggers.end() ;
i++){
367 string theTriggerAlias = (*i).second;
368 m_certLastLS[theTriggerAlias] = m_currentLS;
373 if(m_currentLSValid && m_beamConfig.isValid()){
375 if(m_verbose){
cout <<
"[L1TSync_Harvest] Regular call: doFractionInSync()" << endl;}
376 doFractionInSync(
false,
false);
385 for(map<string,string>::const_iterator
i=m_selectedTriggers.begin() ;
i!=m_selectedTriggers.end() ;
i++){
387 string theTriggerAlias = (*i).second;
389 int fLs = m_certFirstLS[theTriggerAlias];
390 int lLS = m_certLastLS [theTriggerAlias];
394 m_certFirstLS[theTriggerAlias] = 0;
395 m_certLastLS [theTriggerAlias] = 0;
399 m_certLastLS [theTriggerAlias] = m_currentLS-1;
403 doFractionInSync(
true,
false);
406 for(map<string,string>::const_iterator
i=m_selectedTriggers.begin() ;
i!=m_selectedTriggers.end() ;
i++){
407 string theTriggerAlias = (*i).second;
408 m_certFirstLS[theTriggerAlias] = m_currentLS;
409 m_certLastLS [theTriggerAlias] = m_currentLS;
411 doFractionInSync(
true,
true);
413 if(m_verbose){
cout <<
"[L1TSync_Harvest] Error call: doFractionInSync()" << endl;}
422 if(m_verbose){
cout <<
"[L1TSync_Harvest] Called endRun." << endl;}
426 doFractionInSync(
true,
false);
555 for(map<string,string>::const_iterator
i=m_selectedTriggers.begin() ;
i!=m_selectedTriggers.end() ;
i++){
557 string theCategory = (*i).first;
558 string theTriggerAlias = (*i).second;
561 unsigned int fLS = m_certFirstLS[theTriggerAlias];
562 unsigned int lLS = m_certLastLS [theTriggerAlias];
565 bool triggerAlias_isValid = theTriggerAlias !=
"Undefined" && theTriggerAlias !=
"Undefined (Wrong Name)";
566 bool lsBlock_exists = !(fLS == 0 && lLS == 0);
567 bool lsBlock_isValid = fLS <= lLS && fLS > 0 && lLS > 0;
569 if(triggerAlias_isValid && lsBlock_exists && lsBlock_isValid){
573 certifyLSBlock(theTriggerAlias,fLS,lLS,-1);
574 m_certFirstLS[theTriggerAlias] = 0;
575 m_certLastLS [theTriggerAlias] = 0;
582 double CountSync = 0;
586 for(
unsigned int ls=fLS ;
ls<=lLS ;
ls++){
588 CountSync += m_algoVsBunchStructure[theTriggerAlias]->getBinContent(
ls+1,3);
589 for(
int a=1 ;
a<6 ;
a++){
590 CountAll += m_algoVsBunchStructure[theTriggerAlias]->getBinContent(
ls+1,
a);
595 cout <<
"Alias = " << theTriggerAlias
598 <<
" Events=" << CountAll ;
602 CountAll >= m_parameters.getParameter<
ParameterSet>(
"Categories")
606 if(m_verbose){
cout <<
" <--------------- Enough Statistics: ";}
611 if(CountAll >0){fraction = CountSync/CountAll;}
615 if(fraction==0){fraction=0.000001;}
617 certifyLSBlock(theTriggerAlias,fLS,lLS,fraction);
618 m_certFirstLS[theTriggerAlias] = 0;
619 m_certLastLS [theTriggerAlias] = 0;
622 if(m_verbose){
cout << endl;}
631 if(!triggerAlias_isValid){
632 int eCount = m_ErrorMonitor->getTH1()->GetBinContent(ERROR_TRIGGERALIAS_NOTVALID);
634 m_ErrorMonitor->getTH1()->SetBinContent(ERROR_TRIGGERALIAS_NOTVALID,eCount);
635 certifyLSBlock(theTriggerAlias,fLS,lLS,-1);
636 m_certFirstLS[theTriggerAlias] = 0;
637 m_certLastLS [theTriggerAlias] = 0;
641 if(lsBlock_exists && !lsBlock_isValid){
642 int eCount = m_ErrorMonitor->getTH1()->GetBinContent(ERROR_LSBLOCK_NOTVALID);
644 m_ErrorMonitor->getTH1()->SetBinContent(ERROR_LSBLOCK_NOTVALID,eCount);
645 certifyLSBlock(theTriggerAlias,fLS,lLS,-1);
646 m_certFirstLS[theTriggerAlias] = 0;
647 m_certLastLS [theTriggerAlias] = 0;
LuminosityBlockID id() const
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void beginRun(const edm::Run &run, const edm::EventSetup &iSetup)
BeginRun.
void rmdir(const std::string &fullpath)
DEFINE_FWK_MODULE(HiMixingModule)
void certifyLSBlock(std::string iTrigger, int iInitLs, int iEndLs, float iValue)
void analyze(const edm::Event &e, const edm::EventSetup &c)
virtual void beginLuminosityBlock(edm::LuminosityBlock const &lumiBlock, edm::EventSetup const &c)
void doFractionInSync(bool iForce=false, bool iBad=false)
void endRun(const edm::Run &run, const edm::EventSetup &iSetup)
virtual void endLuminosityBlock(edm::LuminosityBlock const &lumiBlock, edm::EventSetup const &c)
LuminosityBlockNumber_t luminosityBlock() const
L1TSync_Harvest(const edm::ParameterSet &ps)
virtual ~L1TSync_Harvest()
void setCurrentFolder(const std::string &fullpath)