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:");
110 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: event called.");
113 TH1* hnEvnts =
findHist(
"SVDExpReco/SVDDQM_nEvents",
true);
114 if (hnEvnts == NULL) {
115 B2INFO(
"no events, nothing to do here");
118 B2DEBUG(10,
"SVDExpReco/SVDDQM_nEvents found");
122 m_runtype = !rtype.empty() ? rtype.c_str() :
"physics";
125 B2INFO(
"no run type found, put defaultwise physics");
127 TString tmp = hnEvnts->GetTitle();
128 Int_t pos = tmp.Last(
'~');
129 if (pos == -1) pos = 0;
131 TString runID = tmp(pos, tmp.Length() - pos);
132 B2INFO(
"DQMHistAnalysisSVDClustersOnTrackModule::runID = " << runID);
133 Float_t nEvents = hnEvnts->GetEntries();
136 double ratio3_6 = 0.;
137 TH1* m_h =
findHist(
"SVDClsTrk/SVDTRK_ClusterTimeV456");
157 B2INFO(
"Histogram SVDClsTrk/c_SVDTRK_ClusterTimeV456 from SVDDQMClustersOnTrack module not found!");
169 m_h =
findHist(
"SVDClsTrk/SVDTRK_Cluster3TimeV456");
186 B2INFO(
"Histogram SVDClsTrk/c_SVDTRK_Cluster3TimeV456 from SVDDQMClustersOnTrack module not found!");
203 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: endRun called");
209 B2DEBUG(10,
"DQMHistAnalysisSVDClustersOnTrack: terminate called");
218 histo.GetXaxis()->SetRange(110, 190);
219 Float_t mean_PeakInCenter = histo.GetMean();
220 histo.GetXaxis()->SetRange();
221 Float_t difference = 0;
224 difference = fabs(mean_PeakInCenter -
m_refMeanP);
227 difference = fabs(mean_PeakInCenter -
m_refMeanC);
230 B2WARNING(
"Run type:" <<
m_runtype <<
"taken cosmics criteria");
231 difference = fabs(mean_PeakInCenter -
m_refMeanC);
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 Run Type.
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.
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.