Belle II Software development
CDCDedxHadBGAlgorithm.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 <map>
12#include <vector>
13#include <iostream>
14#include <fstream>
15
16#include <calibration/CalibrationAlgorithm.h>
17#include <framework/database/DBObjPtr.h>
18#include <framework/gearbox/Const.h>
19
20#include <cdc/utilities/CDCDedxMeanPred.h>
21#include <cdc/utilities/CDCDedxSigmaPred.h>
22#include <cdc/utilities/CDCDedxHadSat.h>
23
24#include <cdc/dbobjects/CDCDedxMeanPars.h>
25#include <cdc/dbobjects/CDCDedxSigmaPars.h>
26
27#include <cdc/calibration/CDCdEdx/HadronBgPrep.h>
28#include <cdc/calibration/CDCdEdx/HadronCalibration.h>
29
30namespace Belle2 {
35
40
41 public:
42
47
51 virtual ~CDCDedxHadBGAlgorithm() override {}
52
56 void setMonitoringPlots(bool value) {m_ismakePlots = value;}
57
61 void setNumIterations(int value) {m_iter = value;}
62
66 void setProtonCut(double value) {m_cut = value;}
67
71 void setBGPars(const std::string& particle, double nbin, double min, double max)
72 {
73 m_bgpar[particle][0] = nbin;
74 m_bgpar[particle][1] = min;
75 m_bgpar[particle][2] = max;
76 }
77
81 void setInjectionPars(const std::string& particle, double nbin, double min, double max)
82 {
83 m_injpar[particle][0] = nbin;
84 m_injpar[particle][1] = min;
85 m_injpar[particle][2] = max;
86 }
87
91 void setCosBin(const std::string& particle, double nbin) { m_cospar[particle] = nbin; }
92
96 void setCosPars(double min, double max) { m_cosMin = min; m_cosMax = max; }
97
101 void getExpRunInfo();
102
106 void createPayload();
107
111 void SigmaFits(const std::vector<std::string >& particles, const std::string& sfx, const std::string& svar,
112 const bool makeIterationSummary);
113
117 void prepareSample(const std::vector<std::string >& particles, const std::string& filename, const std::string& sfx,
118 const bool makeIterationSummary);
119
120 protected:
121
125 virtual EResult calibrate() override;
126
127 private:
128
129 std::map<std::string, std::array<double, 3>> m_bgpar = {
130 {"muon", {12, 2.85, 28.85}},
131 {"pion", {12, 0.9, 14.90}},
132 {"kaon", {11, 1.0, 6.5}},
133 {"proton", {20, 0.33, 0.85}},
134 {"electron", {60, 500.0, 12500.0}}
135 };
136
137 std::map<std::string, std::array<double, 3>> m_injpar = {
138 {"electron", {40, 0, 80000}},
139 {"pion", {10, 0, 48000}},
140 {"kaon", {6, 0, 48000}},
141 {"muon", {40, 0, 80000}},
142 {"proton", {20, 0, 80000}}
143 };
144
145 std::map<std::string, double> m_cospar = {
146 {"electron", 24},
147 {"pion", 18},
148 {"kaon", 18},
149 {"muon", 24},
150 {"proton", 20}
151 };
152
153 double m_cosMin = -0.84;
154 double m_cosMax = 0.96;
155
156 int m_nhitBins = 10;
157 double m_nhitMin = 7;
158 double m_nhitMax = 39;
159
160 double m_cut = 0.5;
161
163
164 std::string m_bgsigma;
165 std::string m_bgcurve;
166 std::string m_suffix;
167
168 int m_iter = 5;
169
172
173 };
174
175} // namespace Belle2
void setBGPars(const std::string &particle, double nbin, double min, double max)
function to set beta gamma parameters for particle
void setCosBin(const std::string &particle, double nbin)
function to set cosine bins for particle
void setMonitoringPlots(bool value)
function to enable monitoring plots
DBObjPtr< CDCDedxMeanPars > m_DBMeanPars
db object for dE/dx mean parameters
std::map< std::string, std::array< double, 3 > > m_bgpar
bg bins, min, max for different particles
void getExpRunInfo()
function to get exp/run information (payload object, plotting)
void setCosPars(double min, double max)
function to set cos parameters for particle
double m_cosMax
max range of cosine
std::map< std::string, double > m_cospar
cos bins for different particles
std::string m_bgcurve
string for mean parameter file names
bool m_ismakePlots
produce plots for monitoring
int m_iter
set number of iteration
std::string m_suffix
string suffix for object names
void prepareSample(const std::vector< std::string > &particles, const std::string &filename, const std::string &sfx, const bool makeIterationSummary)
function to prepare sample for bgcurve fitting, sigma vs ionzation fitting and monitoring plots
virtual ~CDCDedxHadBGAlgorithm() override
Destructor.
void setInjectionPars(const std::string &particle, double nbin, double min, double max)
function to set inection time parameters for particle
CDCDedxHadBGAlgorithm()
Constructor: Sets the description, the properties and the parameters of the algorithm.
void setNumIterations(int value)
function to set number of iteration
void setProtonCut(double value)
function to set the cut to clean protons
double m_nhitMax
max range of nhits
DBObjPtr< CDCDedxSigmaPars > m_DBSigmaPars
db object for dE/dx resolution parameters
std::string m_bgsigma
string for sigma parameter file names
double m_cosMin
min range of cosine
double m_cut
cut to clean protons
virtual EResult calibrate() override
CDC dE/dx Beta Gamma curve and resolution algorithm.
double m_nhitMin
min range of nhits
std::map< std::string, std::array< double, 3 > > m_injpar
injection time bins, min, max for different particles
void createPayload()
function to store payloads after full calibration
void SigmaFits(const std::vector< std::string > &particles, const std::string &sfx, const std::string &svar, const bool makeIterationSummary)
function to do the sigma vs nhit or cos fits and store parameters
EResult
The result of calibration.
CalibrationAlgorithm(const std::string &collectorModuleName)
Constructor - sets the prefix for collected objects (won't be accesses until execute(....
Class for accessing objects in the database.
Definition DBObjPtr.h:21
Abstract base class for different kinds of events.