38void hodo_profile(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 TH2F* profile_hist =
new TH2F(
"profile",
"profile", 18,0,18, 100,0,50);
47 profile_hist->SetTitle(
"Hodoscope profile; Strip # ; Z^{2} ");
48 profile_hist->SetStats(0);
50 TFile *_file0 = TFile::Open(converted_root_file,
"READONLY");
51 TTree *tree = (TTree *)_file0->Get(
"bmndata");
54 tree->SetBranchAddress(
"BmnEventHeader.", &eventHeader);
56 TClonesArray *DigiArray =
nullptr;
57 tree->SetBranchAddress(
"HodoDigi", &DigiArray);
59 TClonesArray *ScWallDigiArray =
nullptr;
60 tree->SetBranchAddress(
"ScWallDigi", &ScWallDigiArray);
62 double ScWallCtrEnergy = 0.;
64 int n_events = (max_entries>0 && tree->GetEntries()>max_entries)? max_entries : tree->GetEntries();
65 cout << n_events << endl;
66 for (
int ev = 0; ev < n_events; ev++)
69 if (ev%10000 == 0) cout <<
"Event: " << ev << endl;
72 auto BT = !(TrigPattern ^ (1 << 7));
73 auto ArmAnd = !(TrigPattern ^ (1 << 2));
74 auto ArmOr = !(TrigPattern ^ (1 << 3));
78 for (
int i = 0;
i < ScWallDigiArray->GetEntriesFast();
i++)
84 if(ThisDigi->
fFitR2 > 0.5)
continue;
86 if(cell_id != 17 && cell_id != 18 && cell_id != 27 && cell_id != 28 )
continue;
94 for (
int i = 0;
i < DigiArray->GetEntriesFast();
i++)
101 if(ThisDigi->
fFitR2 > 0.4)
continue;
107 auto gain = ThisDigi->
GetGain();
110 if(gain != 1)
continue;
111 responses[strip][side] = ThisDigi->
GetSignal();
115 if(responses[
i][0] * responses[
i][1] > 0.001)
116 profile_hist->Fill(
i, (responses[
i][0] + responses[
i][1]));
119 TCanvas* prof =
new TCanvas(
"c_prof",
"c_prof",800,800);
120 canvas_array->Add(prof);
121 result_array->Add(profile_hist);
122 profile_hist->Draw(
"colz");
125 TCanvas *canv_ptr =
new TCanvas();
126 canvas_array->Add(canv_ptr);
127 auto hist_ptr = profile_hist->ProjectionY(Form(
"projection_strip%i",
i),
i,
i+1);
128 hist_ptr->SetTitle(Form(
"strip%i; Z^{2}; Counts",
i));
129 result_array->Add(hist_ptr);
133 TFile *result_file =
new TFile((result_file_name +
".root").Data(),
"RECREATE");
134 TIter nx_iter((TCollection*)(result_array));
136 while ( (obj_ptr=(TObjArray*)nx_iter()) )
138 if(obj_ptr ==
nullptr)
continue;
139 printf(
"Writing %s object\n", obj_ptr->GetName());
142 printf(
"file %s was written\n", (result_file_name +
".root").Data());
143 result_file->Close();
146 for (Int_t
i = 0;
i < canvas_array->GetLast ();
i++)
147 ((TCanvas*) canvas_array->At(
i))->SaveAs ((result_file_name +
".pdf(").Data ());
148 ((TCanvas*) canvas_array->At (canvas_array->GetLast ()))->SaveAs ((result_file_name +
".pdf)").Data ());
149 printf(
"file %s was written\n", (result_file_name +
".pdf").Data());
void memset(T *dest, T i, size_t num)
uses binary expansion of copied volume for speed up
static uint32_t GetAddress(uint32_t StripId, uint32_t StripSide, uint32_t Gain)
Return address from system ID, StripId, StripSide, Gain.