15 #include <framework/core/Module.h>
16 #include <dqm/core/MonitoringObject.h>
17 #include <dqm/analysis/HistObject.h>
18 #include <dqm/analysis/HistDelta.h>
67 typedef std::map<std::string, HistObject>
HistList;
71 typedef std::map<std::string, MonitoringObject*>
MonObjList;
76 typedef std::map<std::string, HistDelta*>
DeltaList;
137 std::vector <chid> m_epicsChID;
139 std::map <std::string, chid> m_epicsNameToChID;
204 static TH1*
findHist(
const std::string& histname,
bool onlyIfUpdated =
false);
213 static TH1*
findHist(
const std::string& dirname,
214 const std::string& histname,
bool onlyIfUpdated =
false);
222 static TH1*
findHistInFile(TFile* file,
const std::string& histname);
254 static bool addHist(
const std::string& dirname,
255 const std::string& histname, TH1* h);
286 TH1*
getDelta(
const std::string& fullname,
int n = 0,
bool onlyIfUpdated =
true);
296 TH1*
getDelta(
const std::string& dirname,
const std::string& histname,
int n = 0,
bool onlyIfUpdated =
true);
314 bool hasDeltaPar(
const std::string& dirname,
const std::string& histname);
321 void UpdateCanvas(std::string name,
bool updated =
true);
328 void UpdateCanvas(TCanvas* canvas,
bool updated =
true);
353 int registerEpicsPV(std::string pvname, std::string keyname =
"",
bool update_pvs =
true);
360 void setEpicsPV(std::string keyname,
double value);
367 void setEpicsPV(std::string keyname,
int value);
468 bool requestLimitsFromEpicsPVs(std::string keyname,
double& lowerAlarm,
double& lowerWarn,
double& upperWarn,
double& upperAlarm);
570 std::vector <std::string>
StringSplit(
const std::string& s,
const char delim);
The base class for the histogram analysis module.
static MonObjList s_monObjList
The list of MonitoringObjects.
TCanvas * findCanvas(TString cname)
Find canvas by name.
void printPVStatus(chid pv, bool onlyError=true)
check the status of a PVs and report if disconnected or not found
bool hasDeltaPar(const std::string &dirname, const std::string &histname)
Check if Delta histogram parameters exist for histogram.
void setPVPrefix(std::string &prefix)
set global Prefix for EPICS PVs
std::map< std::string, HistObject > HistList
The type of list of histograms.
int registerEpicsPV(std::string pvname, std::string keyname="", bool update_pvs=true)
EPICS related Functions.
void addDeltaPar(const std::string &dirname, const std::string &histname, HistDelta::EDeltaType t, int p, unsigned int a=1)
Add Delta histogram parameters.
static TH1 * findHistInFile(TFile *file, const std::string &histname)
Find histogram in specific TFile (e.g.
EStatusColor getStatusColor(EStatus status)
Return color for canvas state.
void colorizeCanvas(TCanvas *canvas, EStatus status)
Helper function for Canvas colorization.
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
static MonitoringObject * findMonitoringObject(const std::string &objName)
Find MonitoringObject.
double getSigma68(TH1 *h) const
Helper function to compute half of the central interval covering 68% of a distribution.
static const DeltaList & getDeltaList()
Get the list of the delta histograms.
EStatusColor
Status colors of histogram/canvas (corresponding to status)
@ c_ColorWarning
Analysis result: Warning, there may be minor issues.
@ c_ColorError
Analysis result: Severe issue found.
@ c_ColorTooFew
Not enough entries/event to judge.
@ c_ColorGood
Analysis result: Good.
@ c_ColorDefault
default for non-coloring
double getEpicsPV(std::string keyname)
Read value from a EPICS PV.
static int s_eventProcessed
Number of Events processed to fill histograms.
std::map< std::string, bool > CanvasUpdatedList
The type of list of canvas updated status.
std::string getEpicsStringPV(std::string keyname, bool &status)
Read value from a EPICS PV.
static HistList s_histList
The list of Histograms.
bool getUseEpicsReadOnly(void)
Getter EPICS flag in read only mode.
static std::string s_runType
The Run type.
void setUseEpics(bool flag)
Setter for EPICS usage.
static void clearHistList(void)
Clears the list of histograms.
TH1 * getDelta(const std::string &fullname, int n=0, bool onlyIfUpdated=true)
Get Delta histogram.
std::vector< std::string > StringSplit(const std::string &s, const char delim)
Helper function for string token split.
static const CanvasUpdatedList & getCanvasUpdatedList()
Get the list of the canvas update status.
void setRunType(std::string &t)
Set the Run Type.
void setEpicsPV(std::string keyname, double value)
Write value to a EPICS PV.
std::map< std::string, MonitoringObject * > MonObjList
The type of list of MonitoringObjects.
void setUseEpicsReadOnly(bool flag)
Setter EPICS flag in read only mode.
static DeltaList s_deltaList
The list of Delta Histograms and settings.
DQMHistAnalysisModule()
Constructor / Destructor.
void checkPVStatus(void)
Check the status of all PVs and report if disconnected or not found.
void setEventProcessed(int e)
Set the number of processed events.
static bool m_epicsReadOnly
Flag if to use EPICS in ReadOnly mode (for reading limits) do not set by yourself,...
EStatus
Status flag of histogram/canvas.
@ c_StatusDefault
default for non-coloring
@ c_StatusTooFew
Not enough entries/event to judge.
@ c_StatusError
Analysis result: Severe issue found.
@ c_StatusWarning
Analysis result: Warning, there may be minor issues.
@ c_StatusGood
Analysis result: Good.
static bool addHist(const std::string &dirname, const std::string &histname, TH1 *h)
Add histogram.
bool getUseEpics(void)
Getter for EPICS usage.
void ExtractRunType(std::vector< TH1 * > &hs)
Extract Run Type from histogram title, called from input module.
static const std::string & getRunType(void)
Get the Run Type.
static const MonObjList & getMonObjList()
Get the list of MonitoringObjects.
std::string & getPVPrefix(void)
get global Prefix for EPICS PVs
static std::string m_PVPrefix
The Prefix for EPICS PVs.
TH1 * findHistInCanvas(const std::string &hname)
Find histogram in corresponding canvas.
void cleanupEpicsPVs(void)
Unsubscribe from EPICS PVs on terminate.
void clearCanvases(void)
Clear content of all Canvases.
static int getEventProcessed(void)
Get the number of processed events.
static HistList & getHistList()
Get the list of the histograms.
EStatus makeStatus(bool enough, bool warn_flag, bool error_flag)
Helper function to judge the status for coloring and EPICS.
static bool m_useEpics
Flag if to use EPICS do not set by yourself, use EpicsEnable module to set.
static void initHistListBeforeEvent(void)
Reset the list of histograms.
void ExtractEvent(std::vector< TH1 * > &hs)
Extract event processed from daq histogram, called from input module.
void UpdateCanvas(std::string name, bool updated=true)
Mark canvas as updated (or not)
static MonitoringObject * getMonitoringObject(const std::string &histname)
Get MonitoringObject with given name (new object is created if non-existing)
std::map< std::string, HistDelta * > DeltaList
The type of list of delta settings and histograms.
chid getEpicsPVChID(std::string keyname)
Get EPICS PV Channel Id.
bool requestLimitsFromEpicsPVs(chid id, double &lowerAlarm, double &lowerWarn, double &upperWarn, double &upperAlarm)
Get Alarm Limits from EPICS PV.
void setEpicsStringPV(std::string keyname, std::string value)
Write string to a EPICS PV.
int updateEpicsPVs(float timeout)
Update all EPICS PV (flush to network)
static CanvasUpdatedList s_canvasUpdatedList
The list of canvas updated status.
EDeltaType
enum definition for delta algo Disabled: nothing Entries: use nr histogram entries Underflow: use ent...
MonitoringObject is a basic object to hold data for the run-dependency monitoring Run summary TCanvas...
Abstract base class for different kinds of events.