14#include <dqm/analysis/modules/DQMHistAnalysisSVDClustersOnTrack.h>
15#include <vxd/geometry/GeoCache.h>
42 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: Constructor done.");
44 setDescription(
"DQM Analysis Module that produces colored canvas for a straightforward interpretation of the SVD Data Quality.");
48 addParam(
"timeThreshold",
m_timeThreshold,
"Acceptable difference between mean of central peak for present and reference run",
50 addParam(
"refMode",
m_refMode,
"Mode reference of the signal time peak",
double(0.0));
51 addParam(
"samples3",
m_3Samples,
"if True 3 samples histograms analysis is performed",
bool(
false));
59 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: initialized.");
75 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: beginRun called.");
83 double timeWarnUp = 0.;
84 double timeErrorLo = 0.;
85 double timeWarnLo = 0.;
89 double ref =
getEpicsPV(
"clusterTimeOnTrackMode");
93 B2DEBUG(10,
" SVD cluster time on track threshold taken from EPICS configuration file:");
94 B2DEBUG(10,
" CLUSTER TIME ON TRACK: error > " <<
m_timeThreshold -
m_refMode <<
" ns with minimum statistics of " <<
121 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: event called.");
124 TH1* hnEvnts =
findHist(
"SVDExpReco/SVDDQM_nEvents",
true);
125 if (hnEvnts == NULL) {
126 B2INFO(
"no events, nothing to do here");
129 B2DEBUG(10,
"SVDExpReco/SVDDQM_nEvents found");
133 m_runtype = !rtype.empty() ? rtype.c_str() :
"physics";
136 B2INFO(
"no run type found, put defaultwise physics");
138 TString tmp = hnEvnts->GetTitle();
139 Int_t pos = tmp.Last(
'~');
140 if (pos == -1) pos = 0;
142 TString runID = tmp(pos, tmp.Length() - pos);
143 B2INFO(
"DQMHistAnalysisSVDClustersOnTrackModule::runID = " << runID);
144 Float_t nEvents = hnEvnts->GetEntries();
147 double ratio3_6 = 0.;
148 TH1* m_h =
findHist(
"SVDClsTrk/SVDTRK_ClusterTimeV456");
173 B2INFO(
"Histogram SVDClsTrk/c_SVDTRK_ClusterTimeV456 from SVDDQMClustersOnTrack module not found!");
185 m_h =
findHist(
"SVDClsTrk/SVDTRK_Cluster3TimeV456");
208 B2INFO(
"Histogram SVDClsTrk/c_SVDTRK_Cluster3TimeV456 from SVDDQMClustersOnTrack module not found!");
225 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: endRun called");
231 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: terminate called");
244 text->SetText(text->GetX(), text->GetY(), Form(
"Mode - Ref: %3.1f ns", mode -
m_refMode));
248 text->SetText(text->GetX(), text->GetY(), Form(
"Mode - Ref: %3.1f ns", mode -
m_refMode));
int registerEpicsPV(const std::string &pvname, const std::string &keyname="")
EPICS related Functions.
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
static const std::string & getRunType(void)
Get the list of the reference histograms.
double getEpicsPV(const std::string &keyname)
Read value from a EPICS PV.
bool requestLimitsFromEpicsPVs(chid id, double &lowerAlarm, double &lowerWarn, double &upperWarn, double &upperAlarm)
Get Alarm Limits from EPICS PV.
void setEpicsPV(const std::string &keyname, double value)
Write value to a EPICS PV.
TCanvas * m_cClusterOnTrackTimeL456V3Samples
time for clusters on Track for L456V canvas for 3 sampples
void initialize() override final
Initializer.
double m_statThreshold
minimal number of events to compare histograms
double m_timeThreshold
difference between mean of cluster time for present and reference run
TString m_runtype
string with runtype: physics or cosmic
DQMHistAnalysisSVDClustersOnTrackModule()
Constructor.
std::string m_pvPrefix
string prefix for EPICS PVs
double m_refMode
reference mode of the signal time peak
void terminate() override final
This method is called at the end of the event processing.
void event() override final
This method is called for each event.
bool m_printCanvas
Parameters accesible from basf2 scripts.
int getCanvasStatus(double mode)
get canvas status
bool m_3Samples
if true enable 3 samples histograms analysis
TH1F m_hClusterOnTrackTime_L456V
time for clusters on Track for L456V histo
void endRun() override final
This method is called if the current run ends.
TCanvas * m_cClusterOnTrackTime_L456V
time for clusters on Track for L456V canvas
void beginRun() override final
Called when entering a new run.
TH1F m_hClusterOnTrackTimeL456V3Samples
time for clusters on Track for L456V histo for 3 samples
~DQMHistAnalysisSVDClustersOnTrackModule() override
Destructor.
static TString getHistoNameFromCanvas(TString cName, TString view="", TString cPrefix="c_", TString hPrefix="")
get histogram name from Canvas name
TPaveText * m_legEmpty
plot legend, empty
TPaveText * m_legLowStat
plot legend, low stats
TPaveText * m_legWarning
plot legend, warning
TPaveText * m_legNormal
plot legend, normal
TPaveText * m_legProblem
plot legend, problem
DQMHistAnalysisSVDModule(bool panelTop=false, bool online=false, bool groupIDs=false)
Constructor.
void setStatusOfCanvas(int status, TCanvas *canvas, bool plotLeg=true, int histoType=kOffline)
set status of Canvas
void setDescription(const std::string &description)
Sets the description of the module.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.