Belle II Software development
CDCDedxCorrectionModule.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 <vector>
12
13#include <framework/core/Module.h>
14#include <framework/datastore/StoreArray.h>
15#include <framework/database/DBObjPtr.h>
16
17#include <cdc/dataobjects/CDCDedxTrack.h>
18#include <cdc/dbobjects/CDCDedxScaleFactor.h>
19#include <cdc/dbobjects/CDCDedxMomentumCor.h>
20#include <cdc/dbobjects/CDCDedxWireGain.h>
21#include <cdc/dbobjects/CDCDedxRunGain.h>
22#include <cdc/dbobjects/CDCDedxInjectionTime.h>
23#include <cdc/dbobjects/CDCDedxCosineCor.h>
24#include <cdc/dbobjects/CDCDedx2DCell.h>
25#include <cdc/dbobjects/CDCDedx1DCell.h>
26#include <cdc/dbobjects/CDCDedxHadronCor.h>
27#include <cdc/dbobjects/CDCDedxADCNonLinearity.h>
28#include <cdc/dbobjects/CDCDedxCosineEdge.h>
29
30#include <mdst/dataobjects/EventLevelTriggerTimeInfo.h>
31
32namespace Belle2 {
37
43
45
46 public:
47
52
56 virtual void initialize() override;
57
60 virtual void event() override;
61
63 virtual void terminate() override;
64
66 void RunGainCorrection(double& dedx) const;
67
69 void TimeGainCorrection(double& dedx, double ring, double time) const;
70
72 void WireGainCorrection(int wireID, double& dedx, int layer) const;
73
75 void TwoDCorrection(int layer, double doca, double enta, double& dedx) const;
76
78 void OneDCorrection(int layer, double enta, double& dedx) const;
79
81 void CosineCorrection(double costheta, double& dedx) const;
82
84 void CosineEdgeCorrection(double costh, double& dedx) const;
85
88 void HadronCorrection(double costheta, double& dedx) const;
89
91 void StandardCorrection(int adc, int layer, int wireID, double doca, double enta, double length,
92 double costheta, double ring, double time, double& dedx) const;
93
95 double GetCorrection(int& adc, int layer, int wireID, double doca, double enta, double costheta, double ring, double time) const;
96
99 double D2I(const double cosTheta, const double D) const;
100
103 double I2D(const double cosTheta, const double I) const;
104
105 private:
106
108
109 bool m_momCor;
120
123
124 //parameters: calibration constants
136 std::vector<double> m_hadronpars;
137 std::array<double, 56> m_lgainavg;
138
140 void calculateMeans(double* mean, double* truncatedMean, double* truncatedMeanErr, const std::vector<double>& dedx) const;
141
146
147 };
148
149} // Belle2 namespace
bool m_twoDCell
boolean to apply 2D correction
double D2I(const double cosTheta, const double D) const
Saturation correction: convert the measured ionization (D) to actual ionization (I)
bool m_runGain
boolean to apply run gains
StoreObjPtr< EventLevelTriggerTimeInfo > m_TTDInfo
Store Object Ptr: EventLevelTriggerTimeInfo.
std::vector< double > m_hadronpars
hadron saturation parameters
bool m_cosineEdge
boolean to apply cosine edge
DBObjPtr< CDCDedxRunGain > m_DBRunGain
Run gain DB object.
bool m_useDBMomCor
boolean to apply momentum correction from DB
void TwoDCorrection(int layer, double doca, double enta, double &dedx) const
Perform a 2D correction.
DBObjPtr< CDCDedxMomentumCor > m_DBMomentumCor
Momentum correction DB object.
bool m_momCor
boolean to apply momentum correction
virtual void initialize() override
Initialize the Module.
bool m_scaleCor
boolean to apply scale factor
DBObjPtr< CDCDedxHadronCor > m_DBHadronCor
hadron saturation parameters
virtual void event() override
This method is called for each event.
double m_removeHighest
upper bound for truncated mean
DBObjPtr< CDCDedxCosineEdge > m_DBCosEdgeCor
cosine edge calibration
double I2D(const double cosTheta, const double I) const
Saturation correction: convert the actual ionization (I) to measured ionization (D)
std::array< double, 56 > m_lgainavg
average calibration factor for the layer
void OneDCorrection(int layer, double enta, double &dedx) const
Perform a wire gain correction.
DBObjPtr< CDCDedxADCNonLinearity > m_DBNonlADC
hadron saturation non linearity
DBObjPtr< CDCDedx1DCell > m_DB1DCell
1D correction DB object
virtual void terminate() override
End of the event processing.
bool m_oneDCell
boolean to apply 1D correction
void HadronCorrection(double costheta, double &dedx) const
Perform a hadron saturation correction.
void calculateMeans(double *mean, double *truncatedMean, double *truncatedMeanErr, const std::vector< double > &dedx) const
Recalculate the dE/dx mean values after corrections.
void StandardCorrection(int adc, int layer, int wireID, double doca, double enta, double length, double costheta, double ring, double time, double &dedx) const
Perform a standard set of corrections.
DBObjPtr< CDCDedx2DCell > m_DB2DCell
2D correction DB object
bool m_nonlADC
boolean to apply non linear ADC
bool m_relative
boolean to apply relative or absolute correction
DBObjPtr< CDCDedxCosineCor > m_DBCosineCor
Electron saturation correction DB object.
StoreArray< CDCDedxTrack > m_cdcDedxTracks
Store array: CDCDedxTrack.
bool m_timeGain
boolean to apply injection time gains
void CosineEdgeCorrection(double costh, double &dedx) const
Perform the cosine edge correction.
DBObjPtr< CDCDedxWireGain > m_DBWireGains
Wire gain DB object.
void CosineCorrection(double costheta, double &dedx) const
Perform the cosine correction.
void WireGainCorrection(int wireID, double &dedx, int layer) const
Perform a wire gain correction.
bool m_cosineCor
boolean to apply cosine correction
void RunGainCorrection(double &dedx) const
Perform a run gain correction.
double GetCorrection(int &adc, int layer, int wireID, double doca, double enta, double costheta, double ring, double time) const
Get the standard set of corrections.
double m_removeLowest
lower bound for truncated mean
DBObjPtr< CDCDedxInjectionTime > m_DBInjectTime
time gain/reso DB object
DBObjPtr< CDCDedxScaleFactor > m_DBScaleFactor
Scale factor to make electrons ~1.
void TimeGainCorrection(double &dedx, double ring, double time) const
Perform a injection time gain correction.
bool m_wireGain
boolean to apply wire gains
Class for accessing objects in the database.
Definition DBObjPtr.h:21
Module()
Constructor.
Definition Module.cc:30
Accessor to arrays stored in the data store.
Definition StoreArray.h:113
Type-safe access to single objects in the data store.
Definition StoreObjPtr.h:96
Abstract base class for different kinds of events.