8#define kTotalModules 54
15 TString led_files_path =
"/home/nikolay/BMN/FHCal/LED/";
19 for (uint32_t mod_iter = 1; mod_iter <= 54; mod_iter++) {
21 TString led_calib_par_file = led_files_path +
Form(
"mod%02d.txt", mod_iter);
22 ifstream led_params_file(led_calib_par_file.
Data(), std::ifstream::in);
23 cout << led_calib_par_file << endl;
24 vector<double> ledVec;
25 if (led_params_file.is_open()) {
27 led_params_file.seekg(-1, std::ios_base::end);
28 if (led_params_file.peek() ==
'\n') {
30 led_params_file.seekg(-1, std::ios_base::cur);
31 int i = led_params_file.tellg();
33 if (led_params_file.peek() ==
'{') {
35 led_params_file.get();
39 led_params_file.seekg(
i, std::ios_base::beg);
46 getline(led_params_file, lastline);
47 stringstream ss(lastline);
52 getline(ss, result,
',');
53 cout << result << endl;
55 ledVec.at(counter) = stod(result);
59 for (
auto it : ledVec)
64 for (uint32_t sec_iter = 1; sec_iter <= 10; sec_iter++) {
68 double mip_calib = calib_pair.first;
70 cout << mod_iter <<
" " << sec_iter <<
" " << mip_calib << endl;
74 mip_calib = 1. / mip_calib;
76 final_calib[mod_iter][sec_iter] = mip_calib * ledVec.at(sec_iter - 1);
80 TH1* th1_hist_ptr =
nullptr;
84 result_array->
SetName(
"calo_npe_calib");
88 canvas_array->
SetName(
"Canvas");
91 TString module_name =
Form(
"bmn_fhcal_module_%02d", module_iter);
93 new TH1F(
Form(
"Module_%s", module_name.
Data()),
Form(
"Module_%s", module_name.
Data()), 12, -0.5, 11.5);
94 th1_hist_ptr->
SetTitle(
Form(
"%s; #section; Light yield [ph.e./mip]", module_name.
Data()));
96 result_array->
Add(th1_hist_ptr);
100 TString module_name =
Form(
"bmn_fhcal_module_%02d", module_iter);
102 for (
int sec_iter = 1; sec_iter <= 10; sec_iter++)
103 th1_hist_ptr->
Fill(sec_iter, final_calib[module_iter][sec_iter]);
109 tcanv_ptr = &canvas_ly[module_iter];
110 tcanv_ptr->
SetName(
Form(
"c_light_yield_mod_%i", module_iter));
111 tcanv_ptr->
SetTitle(
Form(
"c_light_yield_mod_%i", module_iter));
112 canvas_array->
Add(tcanv_ptr);
115 TString module_name =
Form(
"bmn_fhcal_module_%02d", module_iter);
118 th1_hist_ptr->
Draw(
"hist P");
121 TString result_file_name =
"resss";
123 ((
TCanvas*)canvas_array->
At(
i))->SaveAs((result_file_name +
".pdf(").Data());
124 ((
TCanvas*)canvas_array->
At(canvas_array->
GetLast()))->SaveAs((result_file_name +
".pdf)").Data());
125 printf(
"file %s was written\n", (result_file_name +
".pdf").Data());
127 TFile* result_file =
new TFile((result_file_name +
".root").Data(),
"RECREATE");
130 result_file->
cd(start_path.
Data());
133 while ((obj_ptr = (
TObjArray*)nx_iter())) {
134 if (obj_ptr ==
nullptr)
136 printf(
"Writing %s object\n", obj_ptr->
GetName());
139 printf(
"file %s was written\n", (result_file_name +
".root").Data());
140 result_file->
Close();
void memset(T *dest, T i, size_t num)
Copy to memory block [@dest, @dest+@num] num number of times the value of i of type @T with size @typ...
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
static uint32_t GetAddress(uint32_t ModuleType, uint32_t ModuleId, uint32_t SectionId, uint32_t ScintillatorId=0)
Return address from system ID, Module type, Module ID, Section ID, Scintillator ID (optional).
void ParseCalibration(TString calibrationFile)
std::optional< std::pair< float, float > > GetCalibPairFromAddress(uint32_t address)
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
TVirtualPad * cd(Int_t subpadnumber=0) override
void SetTitle(const char *title="") override
void SetName(const char *name="") override
void SetName(const char *name)
const char * GetName() const override
virtual void SetOwner(Bool_t enable=kTRUE)
TDirectory * mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE) override
void Close(Option_t *option="") override
void SetTitle(const char *title) override
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
void Draw(Option_t *option="") override
virtual Int_t Fill(const char *name, Double_t w)
TObject * At(Int_t idx) const override
Int_t GetLast() const override
void Add(TObject *obj) override
virtual const char * GetName() const
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
const char * Data() const