BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnHodoRaw2Digit.h
Go to the documentation of this file.
1#ifndef BMNHodoRAW2DIGIT_H
2#define BMNHodoRAW2DIGIT_H
3
4#include "BmnEnums.h"
5#include "BmnHodoDigi.h"
6#include "Riostream.h"
7#include "TClonesArray.h"
8#include "TString.h"
9#include "WfmProcessor.h"
10
11#include <TStopwatch.h>
12#include <UniRun.h>
13#include <boost/functional/hash.hpp>
14#include <boost/program_options.hpp>
15#include <boost/property_tree/ini_parser.hpp>
16#include <boost/property_tree/ptree.hpp>
17#include <cstdlib>
18#include <iostream>
19#include <numeric>
20#include <optional>
21#include <unordered_map>
22
24{
25
26 public:
27 BmnHodoRaw2Digit(int period, int run, const std::string& mappingFile, const std::string& calibrationFile = "");
29
31
32 TString GetName() { return "BmnHodoRaw2Digit"; }
33 BmnStatus ParseConfig(const std::string& file);
34 BmnStatus ParseCalibration(const std::string& file);
35 BmnStatus LoadCalibration(int period, int run);
37 uint32_t correctINL(uint32_t time, std::pair<size_t, size_t> key);
38 void FillEvent(TClonesArray* tdc_data, TClonesArray* adc_data, TClonesArray* Hododigit);
39 void print();
40
42 auto GetChannelMap() { return fuoChannelMap; }
43 std::optional<std::pair<float, float>> GetCalibPairFromAddress(uint32_t address);
44 std::optional<uint32_t> GetAddressFromBoard(std::pair<size_t, size_t> key);
45
46 private:
48
49 std::unordered_map<std::pair<size_t, size_t>, uint32_t, boost::hash<std::pair<size_t, size_t>>>
50 fuoChannelMap; // physical channel <board, ch> to digi address
51 std::unordered_map<std::pair<size_t, size_t>, std::vector<float>, boost::hash<std::pair<size_t, size_t>>>
52 fINLcorrMap; // physical channel <board, ch> to vector<corrections>
53 std::unordered_map<uint32_t, std::pair<float, float>> fuoCalibMap; // digi address to pair<calib, calibIntegral>
55
57 int fRLthresold; // Threshold to start deconvolution
58 float fR2converge; // R2 threshold to converge
59 size_t fMaxIters; // maximum number of iterations
60 size_t fMaxPeaks; // maximum number of pileup peaks
61 std::vector<float> fEthalon;
62
65
67};
68#endif /* BMNHodoRAW2DIGIT_H */
#define ClassDef(name, id)
BmnStatus
Define status code.
Definition BmnEnums.h:93
void FillEvent(TClonesArray *tdc_data, TClonesArray *adc_data, TClonesArray *Hododigit)
BmnStatus ParseConfig(const std::string &file)
uint32_t correctINL(uint32_t time, std::pair< size_t, size_t > key)
BmnHodoRaw2Digit(int period, int run, const std::string &mappingFile, const std::string &calibrationFile="")
std::optional< std::pair< float, float > > GetCalibPairFromAddress(uint32_t address)
std::unordered_map< std::pair< size_t, size_t >, std::vector< float >, boost::hash< std::pair< size_t, size_t > > > fINLcorrMap
BmnStatus ParseINLcorrections()
BmnStatus LoadCalibration(int period, int run)
std::vector< float > fEthalon
BmnStatus ParseCalibrationJson(const nlohmann::json &j)
std::unordered_map< uint32_t, std::pair< float, float > > fuoCalibMap
BmnStatus ParseCalibration(const std::string &file)
std::unordered_map< std::pair< size_t, size_t >, uint32_t, boost::hash< std::pair< size_t, size_t > > > fuoChannelMap
std::optional< uint32_t > GetAddressFromBoard(std::pair< size_t, size_t > key)
struct WfmProcessor::digiPars fdigiPars
basic_json<> json
default specialization
Definition json.hpp:3365