Belle II Software  release-06-02-00
TOPRecoManager.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 #include <top/reconstruction_cpp/InverseRaytracer.h>
12 #include <top/reconstruction_cpp/FastRaytracer.h>
13 #include <top/reconstruction_cpp/YScanner.h>
14 #include <top/reconstruction_cpp/BackgroundPDF.h>
15 #include <top/dbobjects/TOPCalChannelMask.h>
16 #include <top/dbobjects/TOPCalChannelT0.h>
17 #include <top/dbobjects/TOPCalTimebase.h>
18 #include <framework/database/DBObjPtr.h>
19 #include <top/dataobjects/TOPAsicMask.h>
20 #include <top/geometry/TOPGeometryPar.h>
21 
22 #include <vector>
23 
24 namespace Belle2 {
29  namespace TOP {
30 
35 
36  public:
37 
42  static TOPRecoManager& getInstance();
43 
49  static const InverseRaytracer* getInverseRaytracer(int moduleID);
50 
56  static const FastRaytracer* getFastRaytracer(int moduleID);
57 
63  static const YScanner* getYScanner(int moduleID);
64 
70  static const BackgroundPDF* getBackgroundPDF(int moduleID);
71 
76  static const std::vector<BackgroundPDF>& getBackgroundPDFs() {return getInstance().backgroundPDFs();}
77 
82  static double getMinTime()
83  {
85  return getInstance().m_minTime;
86  }
88  }
89 
94  static double getMaxTime()
95  {
97  return getInstance().m_maxTime;
98  }
100  }
101 
106  static double getTimeWindowSize() {return getMaxTime() - getMinTime();}
107 
113  static void setTimeWindow(double minTime, double maxTime)
114  {
115  getInstance().m_minTime = minTime;
116  getInstance().m_maxTime = maxTime;
117  }
118 
122  static void setDefaultTimeWindow()
123  {
124  getInstance().m_minTime = 0;
125  getInstance().m_maxTime = 0;
126  }
127 
133  static void setChannelMask(const DBObjPtr<TOPCalChannelMask>& mask,
134  const TOPAsicMask& asicMask);
135 
140  static void setUncalibratedChannelsOff(const DBObjPtr<TOPCalChannelT0>& channelT0);
141 
146  static void setUncalibratedChannelsOff(const DBObjPtr<TOPCalTimebase>& timebase);
147 
151  static void setChannelEffi();
152 
153  private:
154 
156  TOPRecoManager() = default;
162  ~TOPRecoManager() = default;
163 
165  void set();
166 
172  std::vector<InverseRaytracer>& inverseRaytracers();
173 
179  std::vector<FastRaytracer>& fastRaytracers();
180 
186  std::vector<YScanner>& yScanners();
187 
193  std::vector<BackgroundPDF>& backgroundPDFs();
194 
195  std::vector<InverseRaytracer> m_inverseRaytracers;
196  std::vector<FastRaytracer> m_fastRaytracers;
197  std::vector<YScanner> m_yScanners;
198  std::vector<BackgroundPDF> m_backgroundPDFs;
199  double m_minTime = 0;
200  double m_maxTime = 0;
201  bool m_redoBkg = false;
203  };
204 
205  //--- inline functions ------------------------------------------------------------
206 
207  inline std::vector<InverseRaytracer>& TOPRecoManager::inverseRaytracers()
208  {
209  if (m_inverseRaytracers.empty()) set();
210  return m_inverseRaytracers;
211  }
212 
213  inline std::vector<FastRaytracer>& TOPRecoManager::fastRaytracers()
214  {
215  if (m_fastRaytracers.empty()) set();
216  return m_fastRaytracers;
217  }
218 
219  inline std::vector<YScanner>& TOPRecoManager::yScanners()
220  {
221  if (m_yScanners.empty()) set();
222  return m_yScanners;
223  }
224 
225  inline std::vector<BackgroundPDF>& TOPRecoManager::backgroundPDFs()
226  {
227  if (m_backgroundPDFs.empty()) set();
228  if (m_redoBkg) {
229  for (auto& pdf : m_backgroundPDFs) pdf.set();
230  m_redoBkg = false;
231  }
232  return m_backgroundPDFs;
233  }
234 
235  } // namespace TOP
237 } // namespace Belle2
238 
Class for accessing objects in the database.
Definition: DBObjPtr.h:21
Class to store bit fields of masked ASICs, as reported in raw data.
Definition: TOPAsicMask.h:23
const TOPNominalTDC & getNominalTDC() const
Returns nominal time-to-digit conversion parameters.
Definition: TOPGeometry.h:218
double getTimeMin() const
Returns time range lower limit.
double getTimeMax() const
Returns time range upper limit.
Parametrization of background PDF in pixels of single module.
Definition: BackgroundPDF.h:23
Fast photon propagation in quartz optics.
Definition: FastRaytracer.h:26
Utility for solving inverse ray-tracing problem.
const TOPGeometry * getGeometry() const
Returns pointer to geometry object using basf2 units.
static TOPGeometryPar * Instance()
Static method to obtain the pointer to its instance.
Singleton class providing pre-constructed reconstruction objects.
std::vector< YScanner > & yScanners()
Interface to y-scanners of all modules.
TOPRecoManager(TOPRecoManager &)=delete
Singleton: no copy constructor.
static const InverseRaytracer * getInverseRaytracer(int moduleID)
Returns inverse ray-tracer of a given module.
static void setDefaultTimeWindow()
Sets default time window (functions getMinTime(), getMaxTime() will then return default values from D...
std::vector< YScanner > m_yScanners
collection of y-scanners
double m_maxTime
time window upper edge
double m_minTime
time window lower edge
std::vector< BackgroundPDF > m_backgroundPDFs
collection of background PDF's
std::vector< InverseRaytracer > & inverseRaytracers()
Interface to inverse ray-tracers of all modules.
~TOPRecoManager()=default
Singleton: private destructor.
void set()
Sets the reconstruction object collections.
static void setChannelMask(const DBObjPtr< TOPCalChannelMask > &mask, const TOPAsicMask &asicMask)
Sets channel masks.
std::vector< InverseRaytracer > m_inverseRaytracers
collection of inverse raytracers
std::vector< FastRaytracer > m_fastRaytracers
collection of fast raytracers
static double getMaxTime()
Returns time window upper edge.
static double getTimeWindowSize()
Returns size of time window.
static const YScanner * getYScanner(int moduleID)
Returns y-scanner of a given module.
std::vector< FastRaytracer > & fastRaytracers()
Interface to fast ray-tracers of all modules.
static void setChannelEffi()
Sets relative efficiencies of pixels.
static const std::vector< BackgroundPDF > & getBackgroundPDFs()
Returns background PDF's of all modules.
static const FastRaytracer * getFastRaytracer(int moduleID)
Returns fast ray-tracer of a given module.
TOPRecoManager & operator=(const TOPRecoManager &)=delete
Singleton: no assignment operator.
std::vector< BackgroundPDF > & backgroundPDFs()
Interface to background PDF's of all modules.
static void setTimeWindow(double minTime, double maxTime)
Sets time window.
static const BackgroundPDF * getBackgroundPDF(int moduleID)
Returns background PDF of a given module.
static TOPRecoManager & getInstance()
Returns instance of the class.
TOPRecoManager()=default
Singleton: private constructor.
bool m_redoBkg
flag to signal whether backgroundPDF has to be redone
static double getMinTime()
Returns time window lower edge.
static void setUncalibratedChannelsOff(const DBObjPtr< TOPCalChannelT0 > &channelT0)
Sets uncalibrated channels off.
Utility for expanding the PDF in y direction.
Definition: YScanner.h:31
Abstract base class for different kinds of events.