31 const int model_order = 2;
32 const int exponents = 2;
35 std::vector<TH2F*> harmHistVect;
36 harmHistVect.resize(exponents);
37 for (
int i = 0;
i < exponents;
i++)
38 harmHistVect.at(
i) =
new TH2F(
Form(
"harmonic%i",
i + 1),
Form(
"harmonic%i",
i + 1), 100, 0, 1, 100, -1, 1);
50 if (branch_name.
Contains(
"ScWall")) {
55 }
else if (branch_name.
Contains(
"FHCal")) {
60 }
else if (branch_name.
Contains(
"Hodo")) {
65 }
else if (branch_name.
Contains(
"Ndet")) {
70 }
else if (branch_name.
Contains(
"Ndet")) {
79 cout << n_events << endl;
80 for (
int ev = 0; ev < n_events; ev++)
85 auto wfm = ThisDigi->
GetWfm();
101 complex<float>* harmonics;
110 printf(
"fit integral %.0f integral %.0d chi2 %.1f R2 %.3f\n", fit_integral, ThisDigi->
fIntegral,
116 for (
int i = 0;
i < exponents;
i++)
117 harmHistVect.at(
i)->Fill(real(harmonics[
i + 1]), imag(harmonics[
i + 1]));
120 TString signal_name =
Form(
"channel %i fit_integral %.0f integral %.0d chi2 %.1f fit_R2 %.3f",
125 if (counter > max_events_show)
128 std::vector<float> points(wfm.size());
129 std::iota(std::begin(points), std::end(points), 0);
130 TGraph* tgr_ptr =
new TGraph(wfm.size(), &points[0], &wfm[0]);
133 if (!fit_wfm.empty()) {
134 TGraph* tgr_ptr_fit =
new TGraph(fit_wfm.size(), &points[0], &fit_wfm[0]);
137 tgr_ptr_fit->
Draw(
"same");
143 for (
int i = 0;
i < exponents;
i++) {
145 harmHistVect.at(
i)->Draw(
"colz");
char * Form(const char *fmt,...)
Data class for Bmn digi container template.
int fZL
Amplitude from waveform [adc counts].
std::vector< float > GetWfm() const
Waveform.
int fTimeMax
Energy deposition from waveform [adc counts].
int fIntegral
ZeroLevel from waveform [adc counts].
static uint32_t GetModuleId(uint32_t address)
Return Module id from address.
void ParseCalibration(TString calibrationFile)
BmnStatus ParseCalibration(const std::string &file)
void ParseCalibration(TString calibrationFile)
BmnStatus ParseCalibration(const std::string &file)
void SetSignalBegin(int SignalBeg)
void CalculateFitHarmonics()
float GetRSquare(int gate_beg, int gate_end)
void CalculateFitAmplitudes()
void SetWaveform(std::vector< float > &Wfm, float ZeroLevel)
std::complex< float > * GetHarmonics()
int ChooseBestSignalBeginHarmonics(int first_sample, int last_sample)
float GetChiSquare(int gate_beg, int gate_end, int time_max)
std::vector< float > GetFitWfm()
float GetIntegral(int gate_beg, int gate_end)
virtual void SetLineWidth(Width_t lwidth)
virtual void SetLineColor(Color_t lcolor)
T * Get(const char *namecycle)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
void Draw(Option_t *chopt="") override
void SetTitle(const char *title="") override
Int_t GetEntriesFast() const
TObject * At(Int_t idx) const override
const char * Data() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
virtual Long64_t GetEntries() const
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
void calibrate_wfm(TString converted_root_file, TString branch_name, TString calib_file, int max_events_show, int max_entries)