Belle II Software  release-05-02-19
PXDBgTupleProducerModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Benjamin Schwenker *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <framework/core/Module.h>
14 #include <framework/gearbox/Unit.h>
15 #include <vxd/dataobjects/VxdID.h>
16 #include <vxd/geometry/SensorInfoBase.h>
17 #include <pxd/geometry/SensorInfo.h>
18 #include <vxd/geometry/GeoCache.h>
19 #include <string>
20 #include <vector>
21 #include <map>
22 
23 
24 namespace Belle2 {
30  namespace PXD {
31 
42  class PXDBgTupleProducerModule: public Module {
43 
44  public:
45 
47  struct SensorData {
49  int m_run;
51  int m_nEvents;
53  double m_minOccupancy;
59  double m_expo;
61  double m_dose;
68 
70  std::vector<double> m_regionExpoMap;
72  std::vector<double> m_regionDoseMap;
74  std::vector<double> m_regionSoftPhotonFluxMap;
76  std::vector<double> m_regionChargedParticleFluxMap;
78  std::vector<double> m_regionHardPhotonFluxMap;
79  };
80 
83 
84  /* Initialize module */
85  void initialize() override final;
86  /* Start-of-run initializations */
87  void beginRun() override final;
88  /* Event processing */
89  void event() override final;
90  /* Final summary and cleanup */
91  void terminate() override final;
92 
93  private:
94 
95  // General
96  const double c_densitySi = 2.3290 * Unit::g_cm3;
102  inline const PXD::SensorInfo& getInfo(VxdID sensorID) const;
104  inline double getSensorArea(VxdID sensorID) const;
106  inline int getRegionID(int uBin, int vBin) const;
108  inline double getRegionArea(VxdID sensorID, int vBin) const;
109 
110  // Output directory
111  std::string m_outputFileName;
113  // StoreArrays
114  std::string m_storeClustersName;
115  std::string m_storeDigitsName;
116  double m_integrationTime;
117  double m_timePeriod;
118  bool m_maskDeadPixels;
119  int m_nBinsU;
120  int m_nBinsV;
125  std::map<unsigned long long int, std::map<VxdID, SensorData> > m_buffer;
126  std::map<VxdID, int> m_sensitivePixelMap;
127  std::map<VxdID, double> m_sensitiveAreaMap;
128  std::map<std::pair<VxdID, int>, int> m_regionSensitivePixelMap;
129  std::map<std::pair<VxdID, int>, double> m_regionSensitiveAreaMap;
132  };
133 
134  inline int PXDBgTupleProducerModule::getRegionID(int uBin, int vBin) const
135  {
136  return uBin * m_nBinsV + vBin;
137  }
138 
139  inline const PXD::SensorInfo& PXDBgTupleProducerModule::getInfo(VxdID sensorID) const
140  {
141  return dynamic_cast<const PXD::SensorInfo&>(VXD::GeoCache::get(sensorID));
142  }
143 
144  inline double PXDBgTupleProducerModule::getSensorArea(VxdID sensorID) const
145  {
146  const PXD::SensorInfo& info = getInfo(sensorID);
147  return info.getWidth() * info.getLength();
148  }
149 
150  inline double PXDBgTupleProducerModule::getRegionArea(VxdID sensorID, int vBin) const
151  {
152  const PXD::SensorInfo& info = getInfo(sensorID);
153  int vi = vBin * info.getVCells() / m_nBinsV;
154  double length = info.getVPitch(info.getVCellPosition(vi)) * info.getVCells() / m_nBinsV;
155  return length * info.getWidth() / m_nBinsU;
156  }
157 
158  } // namespace PXD
160 } // namespace Belle2
161 
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_maxOccupancy
double m_maxOccupancy
Maximum occupancy of all events inside one second block.
Definition: PXDBgTupleProducerModule.h:63
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_nEvents
int m_nEvents
Number of Belle 2 events per second.
Definition: PXDBgTupleProducerModule.h:59
Belle2::PXD::PXDBgTupleProducerModule::c_densitySi
const double c_densitySi
Density of crystalline Silicon.
Definition: PXDBgTupleProducerModule.h:104
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_dose
double m_dose
Dose (Gy per second)
Definition: PXDBgTupleProducerModule.h:69
Belle2::PXD::PXDBgTupleProducerModule::getRegionArea
double getRegionArea(VxdID sensorID, int vBin) const
Return area of the region with the given sensor ID and region vBin.
Definition: PXDBgTupleProducerModule.h:158
Belle2::PXD::PXDBgTupleProducerModule::m_nPXDSensors
int m_nPXDSensors
Total number of PXD sensors.
Definition: PXDBgTupleProducerModule.h:130
Belle2::PXD::PXDBgTupleProducerModule::terminate
void terminate() override final
This method is called at the end of the event processing.
Definition: PXDBgTupleProducerModule.cc:248
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_regionDoseMap
std::vector< double > m_regionDoseMap
Dose (Gy per second) for sensor regions.
Definition: PXDBgTupleProducerModule.h:80
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_run
int m_run
Belle 2 run number.
Definition: PXDBgTupleProducerModule.h:57
Belle2::VXD::GeoCache::get
static const SensorInfoBase & get(Belle2::VxdID id)
Return a reference to the SensorInfo of a given SensorID.
Definition: GeoCache.h:141
Belle2::PXD::PXDBgTupleProducerModule::m_sensitiveAreaMap
std::map< VxdID, double > m_sensitiveAreaMap
Struct to hold sensor-wise sensitive area.
Definition: PXDBgTupleProducerModule.h:135
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_meanOccupancy
double m_meanOccupancy
Average occupancy of all events inside one second block.
Definition: PXDBgTupleProducerModule.h:65
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_regionExpoMap
std::vector< double > m_regionExpoMap
Expositions (energy deposited per cm2 and second) for sensor regions.
Definition: PXDBgTupleProducerModule.h:78
Belle2::PXD::PXDBgTupleProducerModule::PXDBgTupleProducerModule
PXDBgTupleProducerModule()
Constructor.
Definition: PXDBgTupleProducerModule.cc:44
Belle2::PXD::PXDBgTupleProducerModule::m_outputFileName
std::string m_outputFileName
output tuple file name
Definition: PXDBgTupleProducerModule.h:119
Belle2::PXD::PXDBgTupleProducerModule::m_sensorData
std::map< VxdID, SensorData > m_sensorData
Struct to hold sensor-wise background data.
Definition: PXDBgTupleProducerModule.h:132
Belle2::PXD::PXDBgTupleProducerModule::m_buffer
std::map< unsigned long long int, std::map< VxdID, SensorData > > m_buffer
Struct to hold sensor-wise background data.
Definition: PXDBgTupleProducerModule.h:133
Belle2::PXD::PXDBgTupleProducerModule::m_timePeriod
double m_timePeriod
Period for background time series.
Definition: PXDBgTupleProducerModule.h:125
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_expo
double m_expo
Exposition (energy deposited per cm2 and second)
Definition: PXDBgTupleProducerModule.h:67
Belle2::PXD::SensorInfo
Specific implementation of SensorInfo for PXD Sensors which provides additional pixel specific inform...
Definition: SensorInfo.h:34
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_regionChargedParticleFluxMap
std::vector< double > m_regionChargedParticleFluxMap
Charged particle flux (selected clusters per cm and second) for sensor regions.
Definition: PXDBgTupleProducerModule.h:84
Belle2::PXD::PXDBgTupleProducerModule
PXD Background Tuple Producer.
Definition: PXDBgTupleProducerModule.h:50
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_softPhotonFlux
double m_softPhotonFlux
Soft photon flux (selected clusters per cm and second)
Definition: PXDBgTupleProducerModule.h:71
Belle2::PXD::PXDBgTupleProducerModule::m_regionSensitivePixelMap
std::map< std::pair< VxdID, int >, int > m_regionSensitivePixelMap
Struct to hold region-wise number of sensitive pixels.
Definition: PXDBgTupleProducerModule.h:136
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXD::PXDBgTupleProducerModule::m_regionSensitiveAreaMap
std::map< std::pair< VxdID, int >, double > m_regionSensitiveAreaMap
Struct to hold region-wise sensitive area.
Definition: PXDBgTupleProducerModule.h:137
Belle2::PXD::PXDBgTupleProducerModule::m_sensitivePixelMap
std::map< VxdID, int > m_sensitivePixelMap
Struct to hold sensor-wise number of sensitive pixels.
Definition: PXDBgTupleProducerModule.h:134
Belle2::PXD::PXDBgTupleProducerModule::getInfo
const PXD::SensorInfo & getInfo(VxdID sensorID) const
This is a shortcut to getting PXD::SensorInfo from the GeoCache.
Definition: PXDBgTupleProducerModule.h:147
Belle2::PXD::PXDBgTupleProducerModule::SensorData
Struct to hold data of an PXD sensor.
Definition: PXDBgTupleProducerModule.h:55
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_chargedParticleFlux
double m_chargedParticleFlux
Charged particle flux (selected clusters per cm and second)
Definition: PXDBgTupleProducerModule.h:73
Belle2::PXD::PXDBgTupleProducerModule::m_nBinsV
int m_nBinsV
Number of regions per sensor along v side.
Definition: PXDBgTupleProducerModule.h:128
Belle2::PXD::PXDBgTupleProducerModule::m_maskDeadPixels
bool m_maskDeadPixels
Correct bg rates by taking into account masked pixels.
Definition: PXDBgTupleProducerModule.h:126
Belle2::PXD::PXDBgTupleProducerModule::m_storeDigitsName
std::string m_storeDigitsName
PXDDigits StoreArray name.
Definition: PXDBgTupleProducerModule.h:123
Belle2::PXD::PXDBgTupleProducerModule::event
void event() override final
This method is the core of the module.
Definition: PXDBgTupleProducerModule.cc:156
Belle2::PXD::PXDBgTupleProducerModule::getRegionID
int getRegionID(int uBin, int vBin) const
Get region id from region uBin and vBin.
Definition: PXDBgTupleProducerModule.h:142
Belle2::PXD::PXDBgTupleProducerModule::m_nBinsU
int m_nBinsU
Number of regions per sensor along u side.
Definition: PXDBgTupleProducerModule.h:127
Belle2::PXD::PXDBgTupleProducerModule::getSensorArea
double getSensorArea(VxdID sensorID) const
Return area of the sensor with the given sensor ID.
Definition: PXDBgTupleProducerModule.h:152
Belle2::PXD::PXDBgTupleProducerModule::m_integrationTime
double m_integrationTime
Integration time of PXD.
Definition: PXDBgTupleProducerModule.h:124
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_hardPhotonFlux
double m_hardPhotonFlux
Hard photon flux (selected clusters per cm and second)
Definition: PXDBgTupleProducerModule.h:75
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_minOccupancy
double m_minOccupancy
Minimum occupancy of all events inside one second block.
Definition: PXDBgTupleProducerModule.h:61
Belle2::PXD::PXDBgTupleProducerModule::m_hasPXDData
bool m_hasPXDData
Flag to indicate there was at least one PXDDigit in the run.
Definition: PXDBgTupleProducerModule.h:138
Belle2::PXD::PXDBgTupleProducerModule::initialize
void initialize() override final
Initialize the Module.
Definition: PXDBgTupleProducerModule.cc:58
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_regionSoftPhotonFluxMap
std::vector< double > m_regionSoftPhotonFluxMap
Soft photon flux (selected clusters per cm and second) for sensor regions.
Definition: PXDBgTupleProducerModule.h:82
Belle2::PXD::PXDBgTupleProducerModule::SensorData::m_regionHardPhotonFluxMap
std::vector< double > m_regionHardPhotonFluxMap
Hard photon flux (selected clusters per cm and second) for sensor regions.
Definition: PXDBgTupleProducerModule.h:86
Belle2::Unit
The Unit class.
Definition: Unit.h:50
Belle2::PXD::PXDBgTupleProducerModule::m_storeClustersName
std::string m_storeClustersName
PXDClusters StoreArray name.
Definition: PXDBgTupleProducerModule.h:122
Belle2::PXD::PXDBgTupleProducerModule::beginRun
void beginRun() override final
Called when entering a new run.
Definition: PXDBgTupleProducerModule.cc:101