14#include <dqm/analysis/modules/DQMHistAnalysisSVDClustersOnTrack.h>
15#include <vxd/geometry/GeoCache.h>
41 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: Constructor done.");
43 setDescription(
"DQM Analysis Module that produces colored canvas for a straightforward interpretation of the SVD Data Quality.");
47 addParam(
"timeThreshold",
m_timeThreshold,
"Acceptable difference between mean of central peak for present and reference run",
49 addParam(
"refMCTP",
m_refMeanP,
"Mean of the signal time peak from Physics reference run",
float(0.0));
50 addParam(
"refMCTC",
m_refMeanC,
"Mean of the signal time peak from Cosmic reference run",
float(0.0));
51 addParam(
"samples3",
m_3Samples,
"if True 3 samples histograms analysis is performed",
bool(
false));
59 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: initialized.");
74 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: beginRun called.");
82 double timeWarnUp = 0.;
83 double timeErrorLo = 0.;
84 double timeWarnLo = 0.;
86 B2DEBUG(10,
" SVD cluster time on track threshold taken from EPICS configuration file:");
113 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: event called.");
116 TH1* hnEvnts =
findHist(
"SVDExpReco/SVDDQM_nEvents",
true);
117 if (hnEvnts == NULL) {
118 B2INFO(
"no events, nothing to do here");
121 B2DEBUG(10,
"SVDExpReco/SVDDQM_nEvents found");
125 m_runtype = !rtype.empty() ? rtype.c_str() :
"physics";
128 B2INFO(
"no run type found, put defaultwise physics");
130 TString tmp = hnEvnts->GetTitle();
131 Int_t pos = tmp.Last(
'~');
132 if (pos == -1) pos = 0;
134 TString runID = tmp(pos, tmp.Length() - pos);
135 B2INFO(
"DQMHistAnalysisSVDClustersOnTrackModule::runID = " << runID);
136 Float_t nEvents = hnEvnts->GetEntries();
139 double ratio3_6 = 0.;
140 TH1* m_h =
findHist(
"SVDClsTrk/SVDTRK_ClusterTimeV456");
161 B2INFO(
"Histogram SVDClsTrk/c_SVDTRK_ClusterTimeV456 from SVDDQMClustersOnTrack module not found!");
173 m_h =
findHist(
"SVDClsTrk/SVDTRK_Cluster3TimeV456");
192 B2INFO(
"Histogram SVDClsTrk/c_SVDTRK_Cluster3TimeV456 from SVDDQMClustersOnTrack module not found!");
209 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: endRun called");
215 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: terminate called");
224 histo.GetXaxis()->SetRange(110, 190);
225 Float_t mean_PeakInCenter = histo.GetMean();
226 histo.GetXaxis()->SetRange();
227 Float_t difference = 0;
230 difference = fabs(mean_PeakInCenter -
m_refMeanP);
233 difference = fabs(mean_PeakInCenter -
m_refMeanC);
236 B2WARNING(
"Run type:" <<
m_runtype <<
"taken cosmics criteria");
237 difference = fabs(mean_PeakInCenter -
m_refMeanC);
243 text->SetText(text->GetX(), text->GetY(), Form(
"Mean (#pm 40 ns): %3.1f ns", mean_PeakInCenter));
247 text->SetText(text->GetX(), text->GetY(), Form(
"Mean (#pm 40 ns): %3.1f ns", mean_PeakInCenter));
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.
void setEpicsPV(std::string keyname, double value)
Write value to a EPICS PV.
int registerEpicsPV(std::string pvname, std::string keyname="")
EPICS related Functions.
bool requestLimitsFromEpicsPVs(chid id, double &lowerAlarm, double &lowerWarn, double &upperWarn, double &upperAlarm)
Get Alarm Limits from 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.
int getCanvasStatus(TH1F &histo)
get canvas status
float m_refMeanC
mean of the signal time peak from Cosmic reference run
std::string m_pvPrefix
string prefix for EPICS PVs
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.
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.
float m_refMeanP
mean of the signal time peak from Physics reference run
TH1F m_hClusterOnTrackTimeL456V3Samples
time for clusters on Track for L456V histo for 3 samples
~DQMHistAnalysisSVDClustersOnTrackModule()
Destructor.
Class definition for common method.
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
void setStatusOfCanvas(int status, TCanvas *canvas, bool plotLeg=true, bool online=false)
set status of Canvas
TPaveText * m_legNormal
plot legend, normal
TPaveText * m_legProblem
plot legend, problem
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.