Belle II Software  release-06-01-15
DQMHistAnalysisPXDTrackChargeModule Class Reference

DQM Histogram Analysis for PXD Cluster Charge. More...

#include <DQMHistAnalysisPXDTrackCharge.h>

Inheritance diagram for DQMHistAnalysisPXDTrackChargeModule:
Collaboration diagram for DQMHistAnalysisPXDTrackChargeModule:

Public Types

typedef std::map< std::string, TH1 * > HistList
 The type of list of histograms.
 
typedef std::map< std::string, MonitoringObject * > MonObjList
 The type of list of MonitoringObjects.
 
enum  EModulePropFlags {
  c_Input = 1 ,
  c_Output = 2 ,
  c_ParallelProcessingCertified = 4 ,
  c_HistogramManager = 8 ,
  c_InternalSerializer = 16 ,
  c_TerminateInAllProcesses = 32 ,
  c_DontCollectStatistics = 64
}
 Each module can be tagged with property flags, which indicate certain features of the module. More...
 
typedef ModuleCondition::EAfterConditionPath EAfterConditionPath
 Forward the EAfterConditionPath definition from the ModuleCondition.
 

Public Member Functions

 DQMHistAnalysisPXDTrackChargeModule ()
 Constructor.
 
 ~DQMHistAnalysisPXDTrackChargeModule ()
 Destructor.
 
void initialize (void) override final
 Initializer. More...
 
void beginRun (void) override final
 Called when entering a new run.
 
void event (void) override final
 This method is called for each event. More...
 
void endRun (void) override final
 This method is called if the current run ends.
 
void terminate (void) override final
 This method is called at the end of the event processing.
 
TCanvas * findCanvas (TString cname)
 Find canvas by name. More...
 
virtual std::vector< std::string > getFileNames (bool outputFiles)
 Return a list of output filenames for this modules. More...
 
const std::string & getName () const
 Returns the name of the module. More...
 
const std::string & getType () const
 Returns the type of the module (i.e. More...
 
const std::string & getPackage () const
 Returns the package this module is in.
 
const std::string & getDescription () const
 Returns the description of the module.
 
void setName (const std::string &name)
 Set the name of the module. More...
 
void setPropertyFlags (unsigned int propertyFlags)
 Sets the flags for the module properties. More...
 
LogConfiggetLogConfig ()
 Returns the log system configuration.
 
void setLogConfig (const LogConfig &logConfig)
 Set the log system configuration.
 
void setLogLevel (int logLevel)
 Configure the log level.
 
void setDebugLevel (int debugLevel)
 Configure the debug messaging level.
 
void setAbortLevel (int abortLevel)
 Configure the abort log level.
 
void setLogInfo (int logLevel, unsigned int logInfo)
 Configure the printed log information for the given level. More...
 
void if_value (const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 Add a condition to the module. More...
 
void if_false (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to add a condition to the module. More...
 
void if_true (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to set the condition of the module. More...
 
bool hasCondition () const
 Returns true if at least one condition was set for the module.
 
const ModuleConditiongetCondition () const
 Return a pointer to the first condition (or nullptr, if none was set)
 
const std::vector< ModuleCondition > & getAllConditions () const
 Return all set conditions for this module.
 
bool evalCondition () const
 If at least one condition was set, it is evaluated and true returned if at least one condition returns true. More...
 
std::shared_ptr< PathgetConditionPath () const
 Returns the path of the last true condition (if there is at least one, else reaturn a null pointer). More...
 
Module::EAfterConditionPath getAfterConditionPath () const
 What to do after the conditional path is finished. More...
 
std::vector< std::shared_ptr< Path > > getAllConditionPaths () const
 Return all condition paths currently set (no matter if the condition is true or not).
 
bool hasProperties (unsigned int propertyFlags) const
 Returns true if all specified property flags are available in this module. More...
 
bool hasUnsetForcedParams () const
 Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.
 
const ModuleParamListgetParamList () const
 Return module param list.
 
template<typename T >
ModuleParam< T > & getParam (const std::string &name) const
 Returns a reference to a parameter. More...
 
bool hasReturnValue () const
 Return true if this module has a valid return value set.
 
int getReturnValue () const
 Return the return value set by this module. More...
 
std::shared_ptr< PathElementclone () const override
 Create an independent copy of this module. More...
 
std::shared_ptr< boost::python::list > getParamInfoListPython () const
 Returns a python list of all parameters. More...
 

Static Public Member Functions

static const HistListgetHistList ()
 Get the list of the histograms. More...
 
static const MonObjListgetMonObjList ()
 Get the list of MonitoringObjects. More...
 
static TH1 * findHist (const std::string &histname)
 Find histogram. More...
 
static TH1 * findHist (const std::string &dirname, const std::string &histname)
 Find histogram. More...
 
static TH1 * findHist (const TDirectory *histdir, const TString &histname)
 Find histogram. More...
 
static MonitoringObjectfindMonitoringObject (const std::string &objName)
 Find MonitoringObject. More...
 
static void addHist (const std::string &dirname, const std::string &histname, TH1 *h)
 Add histogram. More...
 
static MonitoringObjectgetMonitoringObject (const std::string &histname)
 Get MonitoringObject with given name (new object is created if non-existing) More...
 
static void resetHist ()
 Clear and reset the list of histograms.
 
static void exposePythonAPI ()
 Exposes methods of the Module class to Python.
 

Protected Member Functions

virtual void def_initialize ()
 Wrappers to make the methods without "def_" prefix callable from Python. More...
 
virtual void def_beginRun ()
 Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.
 
virtual void def_event ()
 Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.
 
virtual void def_endRun ()
 This method can receive that the current run ends as a call from the Python side. More...
 
virtual void def_terminate ()
 Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.
 
void setDescription (const std::string &description)
 Sets the description of the module. More...
 
void setType (const std::string &type)
 Set the module type. More...
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
 Adds a new parameter to the module. More...
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description)
 Adds a new enforced parameter to the module. More...
 
void setReturnValue (int value)
 Sets the return value for this module as integer. More...
 
void setReturnValue (bool value)
 Sets the return value for this module as bool. More...
 
void setParamList (const ModuleParamList &params)
 Replace existing parameter list.
 

Private Member Functions

TH1 * GetHisto (TString histoname)
 Get histogram by its name. More...
 
std::list< ModulePtrgetModules () const override
 no submodules, return empty list
 
std::string getPathString () const override
 return the module name.
 
void setParamPython (const std::string &name, const boost::python::object &pyObj)
 Implements a method for setting boost::python objects. More...
 
void setParamPythonDict (const boost::python::dict &dictionary)
 Implements a method for reading the parameter values from a boost::python dictionary. More...
 

Private Attributes

std::string m_histogramDirectoryName
 name of histogram directory
 
std::string m_pvPrefix
 prefix for EPICS PVs
 
double m_rangeLow
 fit range lo edge for landau
 
double m_rangeHigh
 fit range hi edge for landau
 
std::vector< VxdIDm_PXDModules
 IDs of all PXD Modules to iterate over.
 
RooWorkspace * m_rfws {}
 RooFit Workspace.
 
RooRealVar * m_x {}
 RooFit variable.
 
TF1 * m_fMean = nullptr
 Fit the Mean for all modules.
 
TGraphErrors * m_gCharge = nullptr
 Graph covering all modules.
 
TCanvas * m_cCharge = nullptr
 Final Canvas.
 
std::map< VxdID, TCanvas * > m_cChargeMod {}
 Final Canvases for Fit and Ref.
 
std::map< VxdID, std::array< std::array< TCanvas *, 4 >, 6 > > m_cChargeModASIC {}
 Final Canvases for Fit and Ref per ASIC.
 
TH1F * m_hTrackedClusters = nullptr
 Histogram for TrackedClusters.
 
TCanvas * m_cTrackedClusters = nullptr
 Final Canvas for TrackedClusters.
 
std::map< VxdID, TH2F * > m_hChargeModASIC2d {}
 Final Canvas Fit and Ref per ASIC.
 
std::map< VxdID, TCanvas * > m_cChargeModASIC2d {}
 Final Canvas Fit and Ref per ASIC.
 
TLine * m_line_up {}
 TLine object for upper limit of track cluster charge.
 
TLine * m_line_mean {}
 TLine object for mean of track cluster charge.
 
TLine * m_line_low {}
 TLine object for lower limit of track cluster charge.
 
std::string m_refFileName
 Reference Histogram Root file name.
 
TFile * m_refFile = nullptr
 The pointer to the reference file.
 
bool m_color = true
 Whether to use the color code for warnings and errors.
 
MonitoringObjectm_monObj {}
 Monitoring Object.
 
bool m_useEpics
 flag if to export to EPICS
 
std::string m_name
 The name of the module, saved as a string (user-modifiable)
 
std::string m_type
 The type of the module, saved as a string.
 
std::string m_package
 Package this module is found in (may be empty).
 
std::string m_description
 The description of the module.
 
unsigned int m_propertyFlags
 The properties of the module as bitwise or (with |) of EModulePropFlags.
 
LogConfig m_logConfig
 The log system configuration of the module.
 
ModuleParamList m_moduleParamList
 List storing and managing all parameter of the module.
 
bool m_hasReturnValue
 True, if the return value is set.
 
int m_returnValue
 The return value.
 
std::vector< ModuleConditionm_conditions
 Module condition, only non-null if set.
 

Static Private Attributes

static HistList g_hist
 The list of Histograms.
 
static MonObjList g_monObj
 The list of MonitoringObjects.
 

Detailed Description

DQM Histogram Analysis for PXD Cluster Charge.

Definition at line 43 of file DQMHistAnalysisPXDTrackCharge.h.

Member Enumeration Documentation

◆ EModulePropFlags

enum EModulePropFlags
inherited

Each module can be tagged with property flags, which indicate certain features of the module.

Enumerator
c_Input 

This module is an input module (reads data).

c_Output 

This module is an output module (writes data).

c_ParallelProcessingCertified 

This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)

c_HistogramManager 

This module is used to manage histograms accumulated by other modules.

c_InternalSerializer 

This module is an internal serializer/deserializer for parallel processing.

c_TerminateInAllProcesses 

When using parallel processing, call this module's terminate() function in all processes().

This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.

c_DontCollectStatistics 

No statistics is collected for this module.

Definition at line 77 of file Module.h.

Member Function Documentation

◆ addHist()

void addHist ( const std::string &  dirname,
const std::string &  histname,
TH1 *  h 
)
staticinherited

Add histogram.

Parameters
dirnameThe name of the directory.
histnameThe name of the histogram.
hThe TH1 pointer for the histogram.

Definition at line 46 of file DQMHistAnalysis.cc.

◆ clone()

std::shared_ptr< PathElement > clone ( ) const
overridevirtualinherited

Create an independent copy of this module.

Note that parameters are shared, so changing them on a cloned module will also affect the original module.

Implements PathElement.

Definition at line 179 of file Module.cc.

◆ def_endRun()

virtual void def_endRun ( )
inlineprotectedvirtualinherited

This method can receive that the current run ends as a call from the Python side.

For regular C++-Modules that forwards the call to the regular endRun() method.

Reimplemented in PyModule.

Definition at line 439 of file Module.h.

◆ def_initialize()

virtual void def_initialize ( )
inlineprotectedvirtualinherited

Wrappers to make the methods without "def_" prefix callable from Python.

Overridden in PyModule. Wrapper method for the virtual function initialize() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 420 of file Module.h.

◆ evalCondition()

bool evalCondition ( ) const
inherited

If at least one condition was set, it is evaluated and true returned if at least one condition returns true.

If no condition or result value was defined, the method returns false. Otherwise, the condition is evaluated and true returned, if at least one condition returns true. To speed up the evaluation, the condition strings were already parsed in the method if_value().

Returns
True if at least one condition and return value exists and at least one condition expression was evaluated to true.

Definition at line 96 of file Module.cc.

◆ event()

void event ( void  )
finaloverridevirtual

This method is called for each event.

FIXME: what is the accpetable limit?

Reimplemented from Module.

Definition at line 177 of file DQMHistAnalysisPXDTrackCharge.cc.

178 {
179  if (!m_cCharge) return;
180 
181  gStyle->SetOptStat(0);
182  gStyle->SetStatStyle(1);
183  gStyle->SetOptDate(22);// Date and Time in Bottom Right, does no work
184 
185  bool enough = false;
186 
187 // auto landau = m_rfws->pdf("landau");
188 // auto gauss = m_rfws->pdf("gauss");
189  auto model = m_rfws->pdf("lxg");
190 
191  auto ml = m_rfws->var("ml");
192 // auto sl = m_rfws->var("sl");
193 // auto mg = m_rfws->var("mg");
194 // auto sg = m_rfws->var("sg");
195 
196  {
197  m_cTrackedClusters->Clear();
198  m_cTrackedClusters->cd();
199  m_hTrackedClusters->Reset();
200 
201  std::string name = "Tracked_Clusters"; // new name
202  TH1* hh2 = findHist(m_histogramDirectoryName, "PXD_Tracked_Clusters");
203  if (hh2) {
204  auto scale = hh2->GetBinContent(0);// overflow misused as event counter!
205  if (scale > 0) {
206  int j = 1;
207  for (int i = 0; i < 64; i++) {
208  auto layer = (((i >> 5) & 0x1) + 1);
209  auto ladder = ((i >> 1) & 0xF);
210  auto sensor = ((i & 0x1) + 1);
211 
212  auto id = Belle2::VxdID(layer, ladder, sensor);
213  // Check if sensor exist
214  if (Belle2::VXD::GeoCache::getInstance().validSensorID(id)) {
215  m_hTrackedClusters->SetBinContent(j, hh2->GetBinContent(i + 1) / scale);
216  j++;
217  }
218  }
219  }
220  m_hTrackedClusters->SetName(name.data());
221  m_hTrackedClusters->SetTitle("Tracked Clusters/Event");
222  m_hTrackedClusters->SetFillColor(kWhite);
223  m_hTrackedClusters->SetStats(kFALSE);
224  m_hTrackedClusters->SetLineStyle(1);// 2 or 3
225  m_hTrackedClusters->SetLineColor(kBlue);
226  m_hTrackedClusters->Draw("hist");
227 
228  TH1* href2 = GetHisto("ref/" + m_histogramDirectoryName + "/" + name);
229 
230  if (href2) {
231  href2->SetLineStyle(3);// 2 or 3
232  href2->SetLineColor(kBlack);
233  href2->Draw("same,hist");
234  }
235 
236  auto tt = new TLatex(5.5, 0, " 1.3.2 Module is excluded, please ignore");
237  tt->SetTextAngle(90);// Rotated
238  tt->SetTextAlign(12);// Centered
239  tt->Draw();
240  }
241  }
242 
243  m_gCharge->Set(0);
244 
245  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
246  TCanvas* canvas = m_cChargeMod[m_PXDModules[i]];
247  if (canvas == nullptr) continue;
248 
249  std::string name = "PXD_Track_Cluster_Charge_" + (std::string)m_PXDModules[i];
250  std::replace(name.begin(), name.end(), '.', '_');
251 
252  canvas->cd();
253  canvas->Clear();
254 
255  TH1* hh1 = findHist(m_histogramDirectoryName, name);
256  if (hh1) {
257 
258  if (hh1->GetEntries() > 50) {
259 
260  auto hdata = new RooDataHist(hh1->GetName(), hh1->GetTitle(), *m_x, (const TH1*) hh1);
261  auto plot = m_x->frame(RooFit::Title(hh1->GetTitle()));
262  /*auto r =*/ model->fitTo(*hdata, RooFit::Range("signal"));
263 
264  model->paramOn(plot, RooFit::Format("NELU", RooFit::AutoPrecision(2)), RooFit::Layout(0.6, 0.9, 0.9));
265  hdata->plotOn(plot, RooFit::LineColor(kBlue)/*, RooFit::Range("plot"), RooFit::NormRange("signal")*/);
266  model->plotOn(plot, RooFit::LineColor(kRed), RooFit::Range("signal"), RooFit::NormRange("signal"));
267 
268  plot->Draw("");
269 
270 // model->Print("");
271 // ml->Print("");
272 // sl->Print("");
273 // mg->Print("");
274 // sg->Print("");
275 // cout << "ZZZ , " << Form("%d%02d%d ,", std::get<0>(t), std::get<1>(t), std::get<2>(t)) << ml->getValV() << "," << ml->getError() << "," << sl->getValV() << "," << sl->getError() << "," << sg->getValV() << "," << sg->getError() << endl;
276 
277 
278  int p = m_gCharge->GetN();
279  m_gCharge->SetPoint(p, i + 0.49, ml->getValV());
280  m_gCharge->SetPointError(p, 0.1, ml->getError()); // error in x is useless
281  m_monObj->setVariable(("trackcharge_" + (std::string)m_PXDModules[i]).c_str(), ml->getValV(), ml->getError());
282  }
283 
284  TH1* hist2 = GetHisto("ref/" + m_histogramDirectoryName + "/" + name);
285 
286  if (hist2) {
287 // B2INFO("Draw Normalized " << hist2->GetName());
288  hist2->SetLineStyle(3);// 2 or 3
289  hist2->SetLineColor(kBlack);
290 
291 // TIter nextkey(canvas->GetListOfPrimitives());
292 // TObject* obj = NULL;
293 // while ((obj = (TObject*)nextkey())) {
294 // if (obj->IsA()->InheritsFrom("TH1")) {
295 // if (string(obj->GetName()) == string(hist2->GetName())) {
296 // delete obj;
297 // }
298 // }
299 // }
300 
301  canvas->cd();
302 
303  // if draw normalized
304  TH1* h = (TH1*)hist2->Clone(); // Annoying ... Maybe an memory leak? TODO
305  if (abs(hist2->GetEntries()) > 0) h->Scale(hh1->GetEntries() / hist2->GetEntries());
306 
307  h->SetStats(kFALSE);
308  h->Draw("same,hist");
309  }
310 
311  // add coloring, cuts? based on fit, compare with ref?
312  canvas->Pad()->SetFrameFillColor(10);
313  if (m_color) {
314  if (hh1->GetEntries() < 100) {
315  // not enough Entries
316  canvas->Pad()->SetFillColor(kGray);
317  } else {
318  canvas->Pad()->SetFillColor(kGreen);
319  }
320  } else {
321  canvas->Pad()->SetFillColor(kWhite);// White
322  }
323 
324  canvas->Modified();
325  canvas->Update();
326 
327  // means if ANY plot is > 100 entries, all plots are assumed to be o.k.
328  if (hh1->GetEntries() >= 1000) enough = true;
329  }
330  }
331 
332  // now loop per module over asics pairs (1.5.1)
333  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
334 // TCanvas* canvas = m_cChargeMod[m_PXDModules[i]];
335  VxdID& aVxdID = m_PXDModules[i];
336 
337  if (m_hChargeModASIC2d[aVxdID]) m_hChargeModASIC2d[aVxdID]->Reset();
338  if (m_cChargeModASIC2d[aVxdID]) m_cChargeModASIC2d[aVxdID]->Clear();
339 
340  for (int s = 1; s <= 6; s++) {
341  for (int d = 1; d <= 4; d++) {
342  std::string name = "PXD_Track_Cluster_Charge_" + (std::string)m_PXDModules[i] + Form("_sw%d_dcd%d", s, d);
343  std::replace(name.begin(), name.end(), '.', '_');
344 
345  if (m_cChargeModASIC[aVxdID][s - 1][d - 1]) {
346  m_cChargeModASIC[aVxdID][s - 1][d - 1]->Clear();
347  m_cChargeModASIC[aVxdID][s - 1][d - 1]->cd();
348  }
349 
350  TH1* hh1 = findHist(m_histogramDirectoryName, name);
351  if (hh1) {
352  double mpv = 0.0;
353  if (hh1->GetEntries() > 50) {
354  auto hdata = new RooDataHist(hh1->GetName(), hh1->GetTitle(), *m_x, (const TH1*) hh1);
355  auto plot = m_x->frame(RooFit::Title(hh1->GetTitle()));
356  /*auto r =*/ model->fitTo(*hdata, RooFit::Range("signal"));
357 
358  if (m_cChargeModASIC[aVxdID][s - 1][d - 1]) {
359  model->paramOn(plot, RooFit::Format("NELU", RooFit::AutoPrecision(2)), RooFit::Layout(0.6, 0.9, 0.9));
360  hdata->plotOn(plot, RooFit::LineColor(kBlue)/*, RooFit::Range("plot"), RooFit::NormRange("signal")*/);
361  model->plotOn(plot, RooFit::LineColor(kRed), RooFit::Range("signal"), RooFit::NormRange("signal"));
362  }
363  plot->Draw("");
364 
365  mpv = ml->getValV();
366  }
367 
368  if (m_hChargeModASIC2d[aVxdID]) {
369  if (mpv > 0.0) m_hChargeModASIC2d[aVxdID]->Fill(s, d, mpv); // TODO check what is s, d
370  }
371  }
372  }
373  }
374 
375  // Overview map of ASCI combinations
376  if (m_hChargeModASIC2d[aVxdID] && m_cChargeModASIC2d[aVxdID]) {
377  m_cChargeModASIC2d[aVxdID]->cd();
378  m_hChargeModASIC2d[aVxdID]->Draw("colz");
379  }
380  }
381 
382  m_cCharge->cd();
383  m_cCharge->Clear();
384  m_gCharge->SetMinimum(0);
385  m_gCharge->SetMaximum(70);
386  auto ax = m_gCharge->GetXaxis();
387  if (ax) {
388  ax->Set(m_PXDModules.size(), 0, m_PXDModules.size());
389  for (unsigned int i = 0; i < m_PXDModules.size(); i++) {
390  TString ModuleName = (std::string)m_PXDModules[i];
391  ax->SetBinLabel(i + 1, ModuleName);
392  }
393  } else B2ERROR("no axis");
394 
395  m_gCharge->SetLineColor(4);
396  m_gCharge->SetLineWidth(2);
397  m_gCharge->SetMarkerStyle(8);
398  m_gCharge->Draw("AP");
399  {
400  auto tt = new TLatex(5.5, 0, " 1.3.2 Module is excluded, please ignore");
401  tt->SetTextAngle(90);// Rotated
402  tt->SetTextAlign(12);// Centered
403  tt->Draw();
404  }
405  m_cCharge->cd(0);
406  m_cCharge->Modified();
407  m_cCharge->Update();
408 
409  double data = 0;
410  double diff = 0;
411  if (m_gCharge && enough) {
412 // double currentMin, currentMax;
413  m_gCharge->Fit(m_fMean, "R");
414  double mean = m_gCharge->GetMean(2);
415  double maxi = mean + 15;
416  double mini = mean - 15;
417  m_line_up->SetY1(maxi);
418  m_line_up->SetY2(maxi);
419  m_line_mean->SetY1(mean);
420  m_line_mean->SetY2(mean);
421  m_line_low->SetY1(mini);
422  m_line_low->SetY2(mini);
423  data = mean; // m_fMean->GetParameter(0); // we are more interessted in the maximum deviation from mean
424  // m_gCharge->GetMinimumAndMaximum(currentMin, currentMax);
425  diff = m_gCharge->GetRMS(2);// RMS of Y
426  // better, max deviation as fabs(data - currentMin) > fabs(currentMax - data) ? fabs(data - currentMin) : fabs(currentMax - data);
427  m_line_up->Draw();
428  m_line_mean->Draw();
429  m_line_low->Draw();
430 
431  m_monObj->setVariable("trackcharge", mean, diff);
432  }
433 
434 #ifdef _BELLE2_EPICS
435  if (m_useEpics) {
436  SEVCHK(ca_put(DBR_DOUBLE, mychid[0], (void*)&data), "ca_set failure");
437  SEVCHK(ca_put(DBR_DOUBLE, mychid[1], (void*)&diff), "ca_set failure");
438  }
439 #endif
440 
441  int status = 0;
442 
443  if (!enough) {
444  // not enough Entries
445  m_cCharge->Pad()->SetFillColor(kGray);// Magenta or Gray
446  status = 0; // default
447  } else {
449  if (fabs(data - 30.) > 20. || diff > 12) {
450  m_cCharge->Pad()->SetFillColor(kRed);// Red
451  status = 4;
452  } else if (fabs(data - 30) > 15. || diff > 8) {
453  m_cCharge->Pad()->SetFillColor(kYellow);// Yellow
454  status = 3;
455  } else {
456  m_cCharge->Pad()->SetFillColor(kGreen);// Green
457  status = 2;
458  }
459 
460  // FIXME overwrite for now
461  // m_cCharge->Pad()->SetFillColor(kGreen);// Green
462 
463  }
464 
465 #ifdef _BELLE2_EPICS
466  if (m_useEpics) {
467  SEVCHK(ca_put(DBR_INT, mychid[2], (void*)&status), "ca_set failure");
468  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
469  }
470 #endif
471 
472 }
static TH1 * findHist(const std::string &histname)
Find histogram.
bool m_color
Whether to use the color code for warnings and errors.
std::map< VxdID, std::array< std::array< TCanvas *, 4 >, 6 > > m_cChargeModASIC
Final Canvases for Fit and Ref per ASIC.
std::map< VxdID, TH2F * > m_hChargeModASIC2d
Final Canvas Fit and Ref per ASIC.
TLine * m_line_up
TLine object for upper limit of track cluster charge.
TGraphErrors * m_gCharge
Graph covering all modules.
std::vector< VxdID > m_PXDModules
IDs of all PXD Modules to iterate over.
std::string m_histogramDirectoryName
name of histogram directory
TH1 * GetHisto(TString histoname)
Get histogram by its name.
TLine * m_line_mean
TLine object for mean of track cluster charge.
TLine * m_line_low
TLine object for lower limit of track cluster charge.
TH1F * m_hTrackedClusters
Histogram for TrackedClusters.
TCanvas * m_cTrackedClusters
Final Canvas for TrackedClusters.
std::map< VxdID, TCanvas * > m_cChargeMod
Final Canvases for Fit and Ref.
std::map< VxdID, TCanvas * > m_cChargeModASIC2d
Final Canvas Fit and Ref per ASIC.
void setVariable(const std::string &var, float val, float upErr=-1., float dwErr=-1)
set value to float variable (new variable is made if not yet existing)
static GeoCache & getInstance()
Return a reference to the singleton instance.
Definition: GeoCache.cc:213
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33

◆ findCanvas()

TCanvas * findCanvas ( TString  cname)
inherited

Find canvas by name.

Parameters
cnameName of the canvas
Returns
The pointer to the canvas, or nullptr if not found.

Definition at line 71 of file DQMHistAnalysis.cc.

◆ findHist() [1/3]

TH1 * findHist ( const std::string &  dirname,
const std::string &  histname 
)
staticinherited

Find histogram.

Parameters
dirnameThe name of the directory.
histnameThe name of the histogram.
Returns
The found histogram, or nullptr if not found.

Definition at line 132 of file DQMHistAnalysis.cc.

◆ findHist() [2/3]

TH1 * findHist ( const std::string &  histname)
staticinherited

Find histogram.

Parameters
histnameThe name of the histogram.
Returns
The found histogram, or nullptr if not found.

Definition at line 85 of file DQMHistAnalysis.cc.

◆ findHist() [3/3]

TH1 * findHist ( const TDirectory *  histdir,
const TString &  histname 
)
staticinherited

Find histogram.

Parameters
histdirThe TDirectory of the directory.
histnameThe name of the histogram.
Returns
The found histogram, or nullptr if not found.

Definition at line 140 of file DQMHistAnalysis.cc.

◆ findMonitoringObject()

MonitoringObject * findMonitoringObject ( const std::string &  objName)
staticinherited

Find MonitoringObject.

Parameters
objNameThe name of the MonitoringObject.
Returns
The found MonitoringObject, or nullptr if not found.

Definition at line 154 of file DQMHistAnalysis.cc.

◆ getAfterConditionPath()

Module::EAfterConditionPath getAfterConditionPath ( ) const
inherited

What to do after the conditional path is finished.

(defaults to c_End if no condition is set)

Definition at line 133 of file Module.cc.

◆ getConditionPath()

std::shared_ptr< Path > getConditionPath ( ) const
inherited

Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).


Definition at line 113 of file Module.cc.

◆ getFileNames()

virtual std::vector<std::string> getFileNames ( bool  outputFiles)
inlinevirtualinherited

Return a list of output filenames for this modules.

This will be called when basf2 is run with "--dry-run" if the module has set either the c_Input or c_Output properties.

If the parameter outputFiles is false (for modules with c_Input) the list of input filenames should be returned (if any). If outputFiles is true (for modules with c_Output) the list of output files should be returned (if any).

If a module has sat both properties this member is called twice, once for each property.

The module should return the actual list of requested input or produced output filenames (including handling of input/output overrides) so that the grid system can handle input/output files correctly.

This function should return the same value when called multiple times. This is especially important when taking the input/output overrides from Environment as they get consumed when obtained so the finalized list of output files should be stored for subsequent calls.

Reimplemented in RootOutputModule, and RootInputModule.

Definition at line 134 of file Module.h.

◆ getHistList()

static const HistList& getHistList ( )
inlinestaticinherited

Get the list of the histograms.

Returns
The list of the histograms.

Definition at line 61 of file DQMHistAnalysis.h.

◆ GetHisto()

TH1 * GetHisto ( TString  histoname)
private

Get histogram by its name.

Parameters
histonameThe name of the histogram.
Returns
The pointer to the histogram, or nullptr if not found.

Definition at line 494 of file DQMHistAnalysisPXDTrackCharge.cc.

◆ getMonitoringObject()

MonitoringObject * getMonitoringObject ( const std::string &  histname)
staticinherited

Get MonitoringObject with given name (new object is created if non-existing)

Parameters
histnamename of MonitoringObject to get

Definition at line 55 of file DQMHistAnalysis.cc.

◆ getMonObjList()

static const MonObjList& getMonObjList ( )
inlinestaticinherited

Get the list of MonitoringObjects.

Returns
The list of the MonitoringObjects.

Definition at line 67 of file DQMHistAnalysis.h.

◆ getName()

const std::string& getName ( ) const
inlineinherited

Returns the name of the module.

This can be changed via e.g. set_name() in the steering file to give more useful names if there is more than one module of the same type.

For identifying the type of a module, using getType() (or type() in Python) is recommended.

Definition at line 187 of file Module.h.

◆ getParamInfoListPython()

std::shared_ptr< boost::python::list > getParamInfoListPython ( ) const
inherited

Returns a python list of all parameters.

Each item in the list consists of the name of the parameter, a string describing its type, a python list of all default values and the description of the parameter.

Returns
A python list containing the parameters of this parameter list.

Definition at line 279 of file Module.cc.

◆ getReturnValue()

int getReturnValue ( ) const
inlineinherited

Return the return value set by this module.

This value is only meaningful if hasReturnValue() is true

Definition at line 381 of file Module.h.

◆ getType()

const std::string & getType ( ) const
inherited

Returns the type of the module (i.e.

class name minus 'Module')

Definition at line 41 of file Module.cc.

◆ hasProperties()

bool hasProperties ( unsigned int  propertyFlags) const
inherited

Returns true if all specified property flags are available in this module.

Parameters
propertyFlagsOred EModulePropFlags which should be compared with the module flags.

Definition at line 160 of file Module.cc.

◆ if_false()

void if_false ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression "<1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is false.
afterConditionPathWhat to do after executing 'path'.

Definition at line 85 of file Module.cc.

◆ if_true()

void if_true ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to set the condition of the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression ">=1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 90 of file Module.cc.

◆ if_value()

void if_value ( const std::string &  expression,
const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

Add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

See https://confluence.desy.de/display/BI/Software+ModCondTut or ModuleCondition for a description of the syntax.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

Parameters
expressionThe expression of the condition.
pathShared pointer to the Path which will be executed if the condition is evaluated to true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 79 of file Module.cc.

◆ initialize()

void initialize ( void  )
finaloverridevirtual

Initializer.

FIXME were to put the lines depends ...

Reimplemented from Module.

Definition at line 67 of file DQMHistAnalysisPXDTrackCharge.cc.

◆ setDescription()

void setDescription ( const std::string &  description)
protectedinherited

Sets the description of the module.

Parameters
descriptionA description of the module.

Definition at line 214 of file Module.cc.

◆ setLogInfo()

void setLogInfo ( int  logLevel,
unsigned int  logInfo 
)
inherited

Configure the printed log information for the given level.

Parameters
logLevelThe log level (one of LogConfig::ELogLevel)
logInfoWhat kind of info should be printed? ORed combination of LogConfig::ELogInfo flags.

Definition at line 73 of file Module.cc.

◆ setName()

void setName ( const std::string &  name)
inlineinherited

Set the name of the module.

Note
The module name is set when using the REG_MODULE macro, but the module can be renamed before calling process() using the set_name() function in your steering file.
Parameters
nameThe name of the module

Definition at line 214 of file Module.h.

◆ setParamPython()

void setParamPython ( const std::string &  name,
const boost::python::object &  pyObj 
)
privateinherited

Implements a method for setting boost::python objects.

The method supports the following types: list, dict, int, double, string, bool The conversion of the python object to the C++ type and the final storage of the parameter value is done in the ModuleParam class.

Parameters
nameThe unique name of the parameter.
pyObjThe object which should be converted and stored as the parameter value.

Definition at line 234 of file Module.cc.

◆ setParamPythonDict()

void setParamPythonDict ( const boost::python::dict &  dictionary)
privateinherited

Implements a method for reading the parameter values from a boost::python dictionary.

The key of the dictionary has to be the name of the parameter and the value has to be of one of the supported parameter types.

Parameters
dictionaryThe python dictionary from which the parameter values are read.

Definition at line 249 of file Module.cc.

◆ setPropertyFlags()

void setPropertyFlags ( unsigned int  propertyFlags)
inherited

Sets the flags for the module properties.

Parameters
propertyFlagsbitwise OR of EModulePropFlags

Definition at line 208 of file Module.cc.

◆ setReturnValue() [1/2]

void setReturnValue ( bool  value)
protectedinherited

Sets the return value for this module as bool.

The bool value is saved as an integer with the convention 1 meaning true and 0 meaning false. The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 227 of file Module.cc.

◆ setReturnValue() [2/2]

void setReturnValue ( int  value)
protectedinherited

Sets the return value for this module as integer.

The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 220 of file Module.cc.

◆ setType()

void setType ( const std::string &  type)
protectedinherited

Set the module type.

Only for use by internal modules (which don't use the normal REG_MODULE mechanism).

Definition at line 48 of file Module.cc.


The documentation for this class was generated from the following files: