38void simple_analysis(TString converted_root_file, TString result_file_name,
int max_entries)
40 TObjArray *canvas_array =
new TObjArray;
41 canvas_array->SetName (
"Canvas");
42 TObjArray *result_array =
new TObjArray;
43 result_array->SetName(
"Histo");
45 int variantes = BmnHodoAddress::GetMaxFlatIndex();
46 std::vector<TH1F*> signalHistVect;
47 signalHistVect.resize(variantes);
50 for(uint32_t j =0; j <
kNsides; j++)
51 for(uint32_t k =0; k <
kNgains; k++) {
53 TString side = (j == 0)?
"DOWN" :
"UP";
54 TString gain = (k == 0)?
"LOW" :
"HIGH";
55 TString name = Form(
"strip%i side %s gain %s",
i, side.Data(), gain.Data());
56 signalHistVect.at(idx) =
new TH1F(Form(
"variant%i", idx),name.Data(), 300,0,4);
61 TFile *_file0 = TFile::Open(converted_root_file,
"READONLY");
62 TTree *tree = (TTree *)_file0->Get(
"bmndata");
64 TClonesArray *DigiArray =
nullptr;
65 tree->SetBranchAddress(
"HodoDigi", &DigiArray);
68 int n_events = (max_entries>0 && tree->GetEntries()>max_entries)? max_entries : tree->GetEntries();
69 cout << n_events << endl;
70 for (
int ev = 0; ev < n_events; ev++)
73 if (ev%10000 == 0) cout <<
"Event: " << ev << endl;
74 for (
int i = 0;
i < DigiArray->GetEntriesFast();
i++)
81 if(ThisDigi->
fFitR2 > 0.55)
continue;
87 auto gain = ThisDigi->
GetGain();
91 signalHistVect.at(idx)->Fill(signal);
102 TCanvas *canv_total =
new TCanvas(
"total",
"total", 1600,1600);
103 canv_total->DivideSquare(64);
104 canvas_array->Add(canv_total);
107 for(uint32_t j =0; j <
kNsides; j++)
108 for(uint32_t k =0; k <
kNgains; k++) {
111 TCanvas *canv_ptr =
new TCanvas();
113 canvas_array->Add(canv_ptr);
116 double range_low, range_high;
119 range_low = 15; range_high= 30;
122 double adj_now = 23.0/mean;
123 TString new_name = Form(
"%s MEAN %.5f", signalHistVect.at(idx)->GetTitle(), adj_now);
124 signalHistVect.at(idx)->SetTitle(new_name.Data());
125 result_array->Add(signalHistVect.at(idx));
126 signalHistVect.at(idx)->Draw();
128 canv_total->cd(cnter);
129 signalHistVect.at(idx)->Draw();
133 double new_calib = calib_pair.first*adj_now;
134 printf(
"calib = Q %i %i %i %.5f 0.0\n",
i, j, k, new_calib);
138 TFile *result_file =
new TFile((result_file_name +
".root").Data(),
"RECREATE");
139 TIter nx_iter((TCollection*)(result_array));
141 while ( (obj_ptr=(TObjArray*)nx_iter()) )
143 if(obj_ptr ==
nullptr)
continue;
144 printf(
"Writing %s object\n", obj_ptr->GetName());
147 printf(
"file %s was written\n", (result_file_name +
".root").Data());
148 result_file->Close();
151 for (Int_t
i = 0;
i < canvas_array->GetLast ();
i++)
152 ((TCanvas*) canvas_array->At(
i))->SaveAs ((result_file_name +
".pdf(").Data ());
153 ((TCanvas*) canvas_array->At (canvas_array->GetLast ()))->SaveAs ((result_file_name +
".pdf)").Data ());
154 printf(
"file %s was written\n", (result_file_name +
".pdf").Data());
static uint32_t GetAddress(uint32_t StripId, uint32_t StripSide, uint32_t Gain)
Return address from system ID, StripId, StripSide, Gain.
Int_t FitHistogrammSmartInMaxPeak(TH1 *histogramm, Double_t &mean, Double_t &sigma, Double_t nRMSfit=2., Double_t RangeXmin=0., Double_t RangeXmax=0.)