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 {
40
41 public:
42
47
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(std::vector< std::string > particles, const std::string& sfx, const std::string& svar);
112
116 void prepareSample(std::vector< std::string > particles, const std::string& filename, const std::string& sfx);
117
118 protected:
119
123 virtual EResult calibrate() override;
124
125 private:
126
127 std::map<std::string, std::array<double, 3>> m_bgpar = {
128 {"muon", {12, 2.85, 28.85}},
129 {"pion", {12, 0.9, 14.90}},
130 {"kaon", {11, 1.0, 6.5}},
131 {"proton", {20, 0.33, 0.85}},
132 {"electron", {60, 500.0, 12500.0}}
133 };
135 std::map<std::string, std::array<double, 3>> m_injpar = {
136 {"electron", {40, 0, 80000}},
137 {"pion", {10, 0, 48000}},
138 {"kaon", {6, 0, 48000}},
139 {"muon", {40, 0, 80000}},
140 {"proton", {20, 0, 80000}}
141 };
143 std::map<std::string, double> m_cospar = {
144 {"electron", 24},
145 {"pion", 18},
146 {"kaon", 18},
147 {"muon", 24},
148 {"proton", 20}
149 };
151 double m_cosMin = -0.84;
152 double m_cosMax = 0.96;
154 int m_nhitBins = 10;
155 double m_nhitMin = 7;
156 double m_nhitMax = 39;
158 double m_cut = 0.5;
162 std::string m_bgsigma;
163 std::string m_bgcurve;
164 std::string m_suffix;
166 int m_iter = 5;
171 };
173} // namespace Belle2
A calibration algorithm for beta gamma curve and resolution fitting and save payloads.
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
void SigmaFits(std::vector< std::string > particles, const std::string &sfx, const std::string &svar)
function to do the sigma vs nhit or cos fits and store parameters
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
virtual ~CDCDedxHadBGAlgorithm()
Destructor.
bool m_ismakePlots
produce plots for monitoring
int m_iter
set number of iteration
std::string m_suffix
string suffix for object names
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 prepareSample(std::vector< std::string > particles, const std::string &filename, const std::string &sfx)
function to prepare sample for bgcurve fitting, sigma vs ionzation fitting and monitoring plots
Base class for calibration algorithms.
EResult
The result of calibration.
Class for accessing objects in the database.
Definition: DBObjPtr.h:21
Abstract base class for different kinds of events.