diff --git a/macro/psd/build_events.cpp b/macro/psd/build_events.cpp
index e640531619985e65e674ab2b49bb9d10c9e24c5d..f5ecb210fbf21a081abfb389987937c7214940e9 100644
--- a/macro/psd/build_events.cpp
+++ b/macro/psd/build_events.cpp
@@ -1,20 +1,20 @@
-#include <string.h>
-#include <math.h>
+#include <TBrowser.h>
+#include <TCanvas.h>
+#include <TFile.h>
+#include <TGraph.h>
+#include <TH1F.h>
+#include <TH2F.h>
+#include <TMath.h>
+#include <TObjArray.h>
+#include <TObject.h>
+#include <TString.h>
+#include <TTree.h>
 
-#include <iostream>
 #include <fstream>
-#include<TTree.h>
-#include<TString.h>
-#include<TMath.h>
-#include<TObject.h>
-#include<TFile.h>
-#include<TH1F.h>
-#include<TH2F.h>
-#include<TCanvas.h>
-#include<TBrowser.h>
-#include<TObjArray.h>
-#include<TGraph.h>
+#include <iostream>
 
+#include <math.h>
+#include <string.h>
 
 #include "event_data_struct.h"
 
@@ -22,52 +22,52 @@ using namespace std;
 
 // root -l -b -q 'GBTreaderEventBuild.cpp("DspTree.root", "EventTree.root")'
 
-int build_events(TString inFileName, TString outFileName, int dsps_to_read = -1) {
-	  TString srcDir = gSystem->Getenv("VMCWORKDIR");
-	const int total_channels = 32;
-	const int gate_length = 60; //in ns
-
-	  TFile* inFile = TFile::Open(inFileName.Data(), "READONLY");
-	  TTree* inTree = (TTree*) inFile->Get("cbmsim");
-	  if (inTree == nullptr) {
-	    cout << "tree not found" << endl;
-	    return -1;
-	  }
-
-	  std::vector<CbmPsdDsp>* fPsdDspVect = new std::vector<CbmPsdDsp>;
-	  inTree->SetBranchAddress("PsdDsp", &fPsdDspVect);
-	  if (fPsdDspVect == nullptr) {
-	    cout << "no psd dsps vector in tree" << endl;
-	    return -2;
-	  }
-	Int_t Nhits = 0;
-	ULong64_t EventTime = 0;
-
-
-	printf("\n\n====================================================\n");
-	printf("================= TSA DATA READOUT =================\n");
-	printf("====================================================\n\n\n");
-
- 	TFile *result_file = new TFile(outFileName.Data(), "RECREATE");
-        event_data_struct *event_struct = new event_data_struct[total_channels];
-	TTree *event_tree = new TTree("EventTree", "EventTree");
-	event_tree->Branch("Nhits",&Nhits,"Nhits/I");
-	event_tree->Branch("EventTime",&EventTime,"EventTime/l");
-	for(Int_t ch = 0; ch < total_channels; ch++)
-	{
-	    (event_struct+ch)->CreateBranch(event_tree, ch);
-	    (event_struct+ch)->reset();
-	}
-
-	bool first_all_sync = false;
-	double hit_time = 0.;
-	double ev_start_time = 0.;
-	double prev_hit_time = 0.;
-	double timestump = 0.;
-	double prev_timestump = 0.;
-	std::vector<CbmPsdDsp> event_dsp_vect;
-
-/*
+int build_events(TString inFileName, TString outFileName, int dsps_to_read = -1)
+{
+  TString srcDir           = gSystem->Getenv("VMCWORKDIR");
+  const int total_channels = 32;
+  const int gate_length    = 60;  //in ns
+
+  TFile* inFile = TFile::Open(inFileName.Data(), "READONLY");
+  TTree* inTree = (TTree*) inFile->Get("cbmsim");
+  if (inTree == nullptr) {
+    cout << "tree not found" << endl;
+    return -1;
+  }
+
+  std::vector<CbmPsdDsp>* fPsdDspVect = new std::vector<CbmPsdDsp>;
+  inTree->SetBranchAddress("PsdDsp", &fPsdDspVect);
+  if (fPsdDspVect == nullptr) {
+    cout << "no psd dsps vector in tree" << endl;
+    return -2;
+  }
+  Int_t Nhits         = 0;
+  ULong64_t EventTime = 0;
+
+
+  printf("\n\n====================================================\n");
+  printf("================= TSA DATA READOUT =================\n");
+  printf("====================================================\n\n\n");
+
+  TFile* result_file              = new TFile(outFileName.Data(), "RECREATE");
+  event_data_struct* event_struct = new event_data_struct[total_channels];
+  TTree* event_tree               = new TTree("EventTree", "EventTree");
+  event_tree->Branch("Nhits", &Nhits, "Nhits/I");
+  event_tree->Branch("EventTime", &EventTime, "EventTime/l");
+  for (Int_t ch = 0; ch < total_channels; ch++) {
+    (event_struct + ch)->CreateBranch(event_tree, ch);
+    (event_struct + ch)->reset();
+  }
+
+  bool first_all_sync   = false;
+  double hit_time       = 0.;
+  double ev_start_time  = 0.;
+  double prev_hit_time  = 0.;
+  double timestump      = 0.;
+  double prev_timestump = 0.;
+  std::vector<CbmPsdDsp> event_dsp_vect;
+
+  /*
 	{
 		int dsps_for_time_btw = (int) 1e5; //1e5
 		TH1F *h1_time_btw_hits = new TH1F("h1_time_btw", "h1_time_btw; time [ns]; Counts", 500, -50, 300);
@@ -99,142 +99,115 @@ int build_events(TString inFileName, TString outFileName, int dsps_to_read = -1)
 	}
 */
 
-	time_t start_time = time(NULL);
-	prev_hit_time = 0.;
- 	CbmPsdDsp dsp;
-	for( int entr_iter = 0; entr_iter < inTree->GetEntries(); entr_iter++ )
-	{
-		inTree->GetEntry(entr_iter);
-		Int_t nPsdDsps = fPsdDspVect->size();
-		for (Int_t iDsp = 0; iDsp < nPsdDsps; iDsp++) {
-			dsp = (*fPsdDspVect)[iDsp];
-			if(dsp.GetSectionID() > 9) continue;
-			hit_time = dsp.fdTime;
-
-			if( hit_time < ev_start_time) cout<<"negative time "<< hit_time << " " << ev_start_time<<endl;
-			if( hit_time < prev_hit_time) cout<<"negative time"<<endl;
-
-			if( (hit_time - ev_start_time) < gate_length)
-			//if( (hit_time-prev_hit_time) < gate_length ) 
-			{
-				event_dsp_vect.push_back(dsp);
-				prev_hit_time = dsp.fdTime;
-			}
-			else
-			{
-				Nhits = event_dsp_vect.size();
-				EventTime = (ULong64_t) ev_start_time;
-
-				for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) event_struct[ch_iter].reset();
-
-				// Check channel duplicates in dsp vector
-				std::map<uint32_t, int> countMap;
-				for (auto & elem : event_dsp_vect)
-				{
-					auto result = countMap.insert(std::pair<uint32_t, int>(elem.GetSectionID(), 1));
-					if (result.second == false) result.first->second++;
-				}
-
-				// Iterate over the map
-				for (auto & elem : countMap)
-				{
-				    // If frequency count is greater than 1 then its a duplicate element
-				    if (elem.second > 1)
-				    {
-					std::cout << "Replacement in channel " << elem.first << " :: total times " << elem.second << " :: Event vector size "<< event_dsp_vect.size() << std::endl;
-
-					int counter = 0;
-					cout.precision(32);
-					for (auto & PsdDsp : event_dsp_vect)
-					{
-						cout<<"# "<<counter<<" dsp_time-event_begin_time "<<PsdDsp.fdTime-ev_start_time<<endl;
-						cout<< " prev_timestump " << prev_timestump << " timestamp "<< timestump <<endl;
-						cout<<PsdDsp.GetSectionID()<<" "<<PsdDsp.fdEdep<<" "<<PsdDsp.fdTime<<endl;
-						counter++;
-					}
-
-					cout<<"End of microslice"<<endl;
-
-
-				     }
-				}
-							
-
-				for (auto & PsdDsp : event_dsp_vect)
-				{
-					int hit_channel = PsdDsp.GetSectionID();
-					event_data_struct &result_event = event_struct[hit_channel];
-			
-					result_event.EdepFPGA = PsdDsp.fdEdep;		
-					result_event.EdepWfm = PsdDsp.fdEdepWfm;
-					result_event.Ampl = PsdDsp.fdAmpl;
-					result_event.Minimum = PsdDsp.fuMinimum;
-					result_event.ZL   = PsdDsp.fuZL;
-					result_event.Time = PsdDsp.fdTime;
-					result_event.TimeMax = PsdDsp.fuTimeMax;
-					result_event.TimeInEvent = PsdDsp.fdTime-ev_start_time;
-
-					result_event.FitEdep = PsdDsp.fdFitEdep;
-					result_event.FitAmpl   = PsdDsp.fdFitAmpl;
-					result_event.FitZL   = PsdDsp.fdFitZL;
-					result_event.FitR2 = PsdDsp.fdFitR2;
-					result_event.FitTimeMax = PsdDsp.fdFitTimeMax;
-
-					result_event.EventTime = (ULong64_t) ev_start_time;
-
-				}
-
-				if(Nhits>0) event_tree->Fill(); //skipping first dsp
-				event_dsp_vect.clear();
-				//countMap.clear();
-
-				event_dsp_vect.push_back(dsp);
-				ev_start_time = hit_time;
-				prev_hit_time = hit_time;
-
-				
-
-			}
-
-		}
-
-		if(dsps_to_read>0 && event_tree->GetEntries() >= dsps_to_read) break;
-
-
-		if((entr_iter%100) == 0)
-		{
-		    time_t current_time = time(NULL);
-		    Int_t proc_sec = difftime(current_time,start_time);
-		    Float_t percents = (float)entr_iter/(inTree->GetEntries());
-		    Int_t time_est = (percents == 0)?0:proc_sec/percents*(1. - percents);
-		    Float_t proc_rate = (float)proc_sec/entr_iter*1000000./60.;
-
-		    printf("Processed entries: %i (%5.1f%%); [pas %3.0dm %2.0is] [est %3.0dm %2.0is] [%.1f min [%.1fh]/1M ev]\r",
-			   entr_iter, (percents*100.),
-			   (proc_sec/60), proc_sec%60,
-			   (time_est/60), time_est%60,
-			   proc_rate, (proc_rate/60.));
-		    cout<<flush;
-		}
-
-		prev_timestump = timestump;
-
-	}
-
-
-	event_tree->Write();
-	result_file->Close();
-
-	return 0;
-
-
-
-
-
-
+  time_t start_time = time(NULL);
+  prev_hit_time     = 0.;
+  CbmPsdDsp dsp;
+  for (int entr_iter = 0; entr_iter < inTree->GetEntries(); entr_iter++) {
+    inTree->GetEntry(entr_iter);
+    Int_t nPsdDsps = fPsdDspVect->size();
+    for (Int_t iDsp = 0; iDsp < nPsdDsps; iDsp++) {
+      dsp = (*fPsdDspVect)[iDsp];
+      if (dsp.GetSectionID() > 9) continue;
+      hit_time = dsp.fdTime;
+
+      if (hit_time < ev_start_time) cout << "negative time " << hit_time << " " << ev_start_time << endl;
+      if (hit_time < prev_hit_time) cout << "negative time" << endl;
+
+      if ((hit_time - ev_start_time) < gate_length)
+      //if( (hit_time-prev_hit_time) < gate_length )
+      {
+        event_dsp_vect.push_back(dsp);
+        prev_hit_time = dsp.fdTime;
+      }
+      else {
+        Nhits     = event_dsp_vect.size();
+        EventTime = (ULong64_t) ev_start_time;
+
+        for (int ch_iter = 0; ch_iter < total_channels; ch_iter++)
+          event_struct[ch_iter].reset();
+
+        // Check channel duplicates in dsp vector
+        std::map<uint32_t, int> countMap;
+        for (auto& elem : event_dsp_vect) {
+          auto result = countMap.insert(std::pair<uint32_t, int>(elem.GetSectionID(), 1));
+          if (result.second == false) result.first->second++;
+        }
+
+        // Iterate over the map
+        for (auto& elem : countMap) {
+          // If frequency count is greater than 1 then its a duplicate element
+          if (elem.second > 1) {
+            std::cout << "Replacement in channel " << elem.first << " :: total times " << elem.second
+                      << " :: Event vector size " << event_dsp_vect.size() << std::endl;
+
+            int counter = 0;
+            cout.precision(32);
+            for (auto& PsdDsp : event_dsp_vect) {
+              cout << "# " << counter << " dsp_time-event_begin_time " << PsdDsp.fdTime - ev_start_time << endl;
+              cout << " prev_timestump " << prev_timestump << " timestamp " << timestump << endl;
+              cout << PsdDsp.GetSectionID() << " " << PsdDsp.fdEdep << " " << PsdDsp.fdTime << endl;
+              counter++;
+            }
+
+            cout << "End of microslice" << endl;
+          }
+        }
+
+
+        for (auto& PsdDsp : event_dsp_vect) {
+          int hit_channel                 = PsdDsp.GetSectionID();
+          event_data_struct& result_event = event_struct[hit_channel];
+
+          result_event.EdepFPGA    = PsdDsp.fdEdep;
+          result_event.EdepWfm     = PsdDsp.fdEdepWfm;
+          result_event.Ampl        = PsdDsp.fdAmpl;
+          result_event.Minimum     = PsdDsp.fuMinimum;
+          result_event.ZL          = PsdDsp.fuZL;
+          result_event.Time        = PsdDsp.fdTime;
+          result_event.TimeMax     = PsdDsp.fuTimeMax;
+          result_event.TimeInEvent = PsdDsp.fdTime - ev_start_time;
+
+          result_event.FitEdep    = PsdDsp.fdFitEdep;
+          result_event.FitAmpl    = PsdDsp.fdFitAmpl;
+          result_event.FitZL      = PsdDsp.fdFitZL;
+          result_event.FitR2      = PsdDsp.fdFitR2;
+          result_event.FitTimeMax = PsdDsp.fdFitTimeMax;
+
+          result_event.EventTime = (ULong64_t) ev_start_time;
+        }
+
+        if (Nhits > 0) event_tree->Fill();  //skipping first dsp
+        event_dsp_vect.clear();
+        //countMap.clear();
+
+        event_dsp_vect.push_back(dsp);
+        ev_start_time = hit_time;
+        prev_hit_time = hit_time;
+      }
+    }
+
+    if (dsps_to_read > 0 && event_tree->GetEntries() >= dsps_to_read) break;
+
+
+    if ((entr_iter % 100) == 0) {
+      time_t current_time = time(NULL);
+      Int_t proc_sec      = difftime(current_time, start_time);
+      Float_t percents    = (float) entr_iter / (inTree->GetEntries());
+      Int_t time_est      = (percents == 0) ? 0 : proc_sec / percents * (1. - percents);
+      Float_t proc_rate   = (float) proc_sec / entr_iter * 1000000. / 60.;
+
+      printf("Processed entries: %i (%5.1f%%); [pas %3.0dm %2.0is] [est %3.0dm %2.0is] [%.1f min [%.1fh]/1M ev]\r",
+             entr_iter, (percents * 100.), (proc_sec / 60), proc_sec % 60, (time_est / 60), time_est % 60, proc_rate,
+             (proc_rate / 60.));
+      cout << flush;
+    }
+
+    prev_timestump = timestump;
+  }
+
+
+  event_tree->Write();
+  result_file->Close();
+
+  return 0;
 }
-
-
-
-
-
diff --git a/macro/psd/compare_to_sim.cpp b/macro/psd/compare_to_sim.cpp
index ff050c703b40b69f34bf60ffb149091e8f53580a..55245274f5325e7f5420cbccb32dd4e474a79c33 100644
--- a/macro/psd/compare_to_sim.cpp
+++ b/macro/psd/compare_to_sim.cpp
@@ -1,26 +1,26 @@
-#include <string.h>
-#include <math.h>
-
-#include <TROOT.h>
-#include <iostream>
-#include <fstream>
-#include<TTree.h>
-#include<TString.h>
-#include<TMath.h>
-#include<TObject.h>
-#include<TFile.h>
-#include<TH1F.h>
-#include<TH2F.h>
-#include<TCanvas.h>
-#include<TBrowser.h>
-#include<TObjArray.h>
-#include<TGraph.h>
-#include <TLatex.h>
+#include <TBrowser.h>
+#include <TCanvas.h>
 #include <TChain.h>
-
-#include <TGraphErrors.h>
 #include <TF1.h>
+#include <TFile.h>
+#include <TGraph.h>
+#include <TGraphErrors.h>
+#include <TH1F.h>
+#include <TH2F.h>
+#include <TLatex.h>
+#include <TMath.h>
+#include <TObjArray.h>
+#include <TObject.h>
+#include <TROOT.h>
+#include <TString.h>
 #include <TStyle.h>
+#include <TTree.h>
+
+#include <fstream>
+#include <iostream>
+
+#include <math.h>
+#include <string.h>
 
 #include "event_data_struct.h"
 
@@ -30,231 +30,220 @@ using namespace std;
 // root -l -b -q 'GBTtreeShowSimple_fin.cpp("/mnt/c/Users/dmitr/cernbox/SOURCE/CALO/INR_ADC/16_cosmic_TRG09_44V_LC/Readout.root", "/mnt/c/Users/dmitr/cernbox/SOURCE/CALO/INR_ADC/16_cosmic_TRG09_44V_LC/Readout_ss", 1000)'
 
 
+Double_t SpectraCenter(TH1* hist, float nrms = 6.)
+{
+  Double_t hist_start_Xmin = hist->GetXaxis()->GetXmin();
+  Double_t hist_start_Xmax = hist->GetXaxis()->GetXmax();
+  hist->SetAxisRange(hist_start_Xmin, hist_start_Xmax);
 
+  Double_t histMean = hist->GetMean();
+  Double_t histRMS  = hist->GetRMS();
+  Double_t histBin  = hist->GetBinWidth(1);
+  if (histRMS < histBin) histRMS = histBin;
 
+  hist->SetAxisRange(histMean - histRMS * nrms, histMean + histRMS * nrms);
+  printf("%s m %f r %f\n", hist->GetName(), histMean, histRMS);
+  return histMean;
+}
+
+
+int compare_to_sim(TString file_name, TString result_file_name, TString calc_mode = "EdepFPGA", int events_to_read = -1,
+                   int nhits = 0, int cut_option = 0)
+{
 
-  Double_t SpectraCenter(TH1* hist, float nrms = 6.){
-    Double_t hist_start_Xmin = hist->GetXaxis()->GetXmin();
-    Double_t hist_start_Xmax = hist->GetXaxis()->GetXmax();
-    hist->SetAxisRange(hist_start_Xmin, hist_start_Xmax);
-	  
-    Double_t histMean = hist->GetMean();
-    Double_t histRMS = hist->GetRMS();
-	Double_t histBin = hist->GetBinWidth(1);
-	if (histRMS < histBin) histRMS = histBin;
-	
-    hist->SetAxisRange(histMean-histRMS*nrms, histMean+histRMS*nrms);
-	printf("%s m %f r %f\n", hist->GetName(), histMean, histRMS);
-	return histMean;
+  const int total_channels   = 10;
+  std::vector<int> hist_pars = {200, 0, 100};
+  result_file_name           = result_file_name + Form("_by_%s", calc_mode.Data());
+  switch (cut_option) {
+    case 0: result_file_name = result_file_name + "_noCut"; break;
+    case 1: result_file_name = result_file_name + "_tCut"; break;
+    case 2: result_file_name = result_file_name + "_tR2Cut"; break;
   }
 
+  TFile* file_sim =
+    TFile::Open("/home/nikolay/git_projects/mPSD_test_bench/data/ONi2AGeV_sim/O2AGeV_Ni_Hists_10kk.root");
+  gDirectory->cd("Rint:/");
+
+  TObjArray* canvas_array = new TObjArray;
+  canvas_array->SetName("Canvas");
+
+  TObjArray* result_array = new TObjArray;
+  result_array->SetName("calo_results");
+  result_array->SetOwner();
+
+  TChain* data_tree = new TChain;
+  data_tree->AddFile((file_name + "/EventTree").Data());
+  if (events_to_read == -1) events_to_read = data_tree->GetEntries();
 
+  event_data_struct* event_struct = new event_data_struct[total_channels];
+  for (Int_t ch = 0; ch < total_channels; ch++)
+    (event_struct + ch)->SetBranch(data_tree, ch);
 
+  TH1* th1_hist_ptr = nullptr;
+  TH2* th2_hist_ptr = nullptr;
 
+  th1_hist_ptr = new TH1F("EdepProfile", Form("EdepProfile"), total_channels, 0, total_channels);
+  th1_hist_ptr->SetTitle(Form("Energy profile; Chan; Energy [MeV]"));
+  result_array->Add(th1_hist_ptr);
 
+  TH1F* temp = new TH1F("temp", Form("temp"), total_channels, 0, total_channels);
+  data_tree->Draw(Form("channel_%i.%s>>temp", 0, calc_mode.Data()), Form("channel_%i.%s > 1", 0, calc_mode.Data()), "",
+                  events_to_read);
 
-int compare_to_sim(TString file_name, TString result_file_name, TString calc_mode = "EdepFPGA", int events_to_read = -1, int nhits = 0, int cut_option = 0) {
-
-	const int total_channels = 10;	
-	std::vector<int> hist_pars = {200, 0, 100};
-	result_file_name = result_file_name+Form("_by_%s", calc_mode.Data());
-	switch(cut_option){
-	case 0:
-		result_file_name = result_file_name+"_noCut";
-		break;
-	case 1:
-		result_file_name = result_file_name+"_tCut";
-		break;
-	case 2:
-		result_file_name = result_file_name+"_tR2Cut";
-		break;
-	}
-
-	TFile* file_sim = TFile::Open("/home/nikolay/git_projects/mPSD_test_bench/data/ONi2AGeV_sim/O2AGeV_Ni_Hists_10kk.root");
-	gDirectory->cd("Rint:/");
-
-	TObjArray *canvas_array = new TObjArray;
-	canvas_array->SetName ("Canvas");
-
-	TObjArray *result_array = new TObjArray;
-	result_array->SetName("calo_results");
-	result_array->SetOwner();
-
-	TChain *data_tree = new TChain;
-	data_tree->AddFile( (file_name + "/EventTree").Data() );
-	if(events_to_read==-1) events_to_read = data_tree->GetEntries();
-
-	event_data_struct *event_struct = new event_data_struct[total_channels];
-	for(Int_t ch = 0; ch < total_channels; ch++)
-	    (event_struct+ch)->SetBranch(data_tree, ch);
-
-	TH1 *th1_hist_ptr = nullptr;
-	TH2 *th2_hist_ptr = nullptr;
-
-	th1_hist_ptr  = new TH1F( "EdepProfile", Form("EdepProfile"), total_channels,0,total_channels);
-	th1_hist_ptr->SetTitle( Form("Energy profile; Chan; Energy [MeV]") );
-	result_array->Add(th1_hist_ptr);
-
-	TH1F* temp = new TH1F( "temp", Form("temp"), total_channels,0,total_channels);
-	data_tree->Draw( Form("channel_%i.%s>>temp", 0, calc_mode.Data()), Form("channel_%i.%s > 1", 0, calc_mode.Data()), "", events_to_read );
-
-	for(int ch_iter = 0; ch_iter < total_channels; ch_iter++)
-	{
-		th1_hist_ptr  = new TH1F( Form("Edep_ch%i", ch_iter), Form("Edep_ch%i", ch_iter), hist_pars[0],hist_pars[1],hist_pars[2] );
-		th1_hist_ptr->SetTitle( Form("Charge channel %i; Edep [MeV]", ch_iter) );
-
-		th2_hist_ptr  = new TH2F( Form("timeMax_vs_Edep_ch%i", ch_iter), Form("timeMax_vs_Edep_ch%i", ch_iter), 32,0,32, hist_pars[0],hist_pars[1],hist_pars[2] );
-		th2_hist_ptr->SetTitle( Form("TimeMax vs Edep channel %i; TimeMax [12,5ns]; Charge [mV]", ch_iter) );
-
-		th2_hist_ptr  = new TH2F( Form("FitR2_vs_Edep_ch%i", ch_iter), Form("FitR2_vs_Edep_ch%i", ch_iter), hist_pars[0],hist_pars[1],hist_pars[2], 200,0,2 );
-		th2_hist_ptr->SetTitle( Form("FitR2 vs EdepFPGA channel %i; Charge [mV]; R2 []", ch_iter) );
-	}
-
-	TString common_selection =  Form("(Nhits > %i)", nhits);
-	//draw selection
-	for(int ch_iter = 0; ch_iter < total_channels; ch_iter++)
-	{
-			TString ich_selection = "";
-			//ich_selection += Form("&&(channel_%i.Edep>1.5) ", ch_iter);//dont touch (not filled channels removal)
-			switch(cut_option){
-			case 0:
-				break;
-			case 1:
-				ich_selection += Form("&&(channel_%i.TimeMax>=4 && channel_%i.TimeMax<=7)", ch_iter, ch_iter);
-				break;
-			case 2:
-				ich_selection += Form("&&(channel_%i.TimeMax>=4 && channel_%i.TimeMax<=7)", ch_iter, ch_iter);
-				ich_selection += Form("&&(channel_%i.FitR2<0.4)", ch_iter);
-				break;
-			}
-
-			TString hist_name = Form("Edep_ch%i", ch_iter);
-			data_tree->Draw( Form("channel_%i.%s>>%s", ch_iter, calc_mode.Data(), hist_name.Data()), (common_selection+ich_selection).Data(), "", events_to_read );
-
-			hist_name = Form("timeMax_vs_Edep_ch%i", ch_iter);
-			data_tree->Draw( Form("channel_%i.%s:channel_%i.TimeMax>>%s", ch_iter, calc_mode.Data(), ch_iter, hist_name.Data()), 
-													(common_selection+ich_selection).Data(), "", events_to_read );
-
-			hist_name = Form("FitR2_vs_Edep_ch%i", ch_iter);
-			data_tree->Draw( Form("channel_%i.FitR2:channel_%i.EdepFPGA>>%s", ch_iter, ch_iter, /*calc_mode.Data(),*/ hist_name.Data()), 
-													(common_selection+ich_selection).Data(), "", events_to_read );
-			
-			printf("selection for ch %i: [%s]\n", ch_iter, (common_selection+ich_selection).Data());
-	}
-
-
-	//drawing histogramms
-	for(int ch_iter = 0; ch_iter < total_channels; ch_iter++)
-	{
-		double mip = 5.0; //MeV
-		TH1* th1_ch_ptr = ((TH1*)(gDirectory->FindObjectAny( Form("Edep_ch%i", ch_iter) )));
-
-		th1_hist_ptr = ((TH1*)(gDirectory->FindObjectAny( "EdepProfile" )));
-		//th1_hist_ptr->SetBinContent(ch_iter+1, th1_ch_ptr->GetMean());//*th1_ch_ptr->GetEntries()/data_tree->GetEntries());
-		th1_hist_ptr->SetBinContent(ch_iter+1, th1_ch_ptr->GetMean()*th1_ch_ptr->GetEntries()/temp->GetEntries());
-
-	}
-	
-
-
-	TCanvas *canv_charge_Edep = new TCanvas("canv_charge_Edep", "canv_charge_Edep");
-	canvas_array->Add(canv_charge_Edep);
-	canv_charge_Edep->DivideSquare(total_channels);
-	for (int ch_iter = 0; ch_iter < total_channels; ch_iter++){
-		canv_charge_Edep->cd(ch_iter+1)->SetLogy(1);
-		th1_hist_ptr = ((TH1*)(gDirectory->FindObjectAny( Form("Edep_ch%i", ch_iter) )));
-		th1_hist_ptr->Draw();
-		result_array->Add(th1_hist_ptr);
-		int start = 8;
-		int stop = 20;
-		Int_t binx_min = th1_hist_ptr->GetXaxis()->FindBin(start);
-		Int_t binx_max = th1_hist_ptr->GetXaxis()->FindBin(stop);
-		double data_integral = th1_hist_ptr->Integral(binx_min, binx_max);
-
-		th1_hist_ptr = ((TH1F*)(file_sim->FindObjectAny( Form("hf4_%i", ch_iter+1) )));
-		if(th1_hist_ptr == nullptr) {cout<<"no hist"<<endl; break;}
-		th1_hist_ptr->SetLineColor(kMagenta);
-		th1_hist_ptr->SetLineWidth(2);
-		binx_min = th1_hist_ptr->GetXaxis()->FindBin(start);
-		binx_max = th1_hist_ptr->GetXaxis()->FindBin(stop);
-		th1_hist_ptr->Scale(data_integral/th1_hist_ptr->Integral(binx_min, binx_max));
-		th1_hist_ptr->Draw("same hist");
-
-	}
-	
-
-	TCanvas *canv_time_Edep = new TCanvas("canv_time_Edep", "canv_time_Edep");
-	canvas_array->Add(canv_time_Edep);
-	canv_time_Edep->DivideSquare(total_channels);
-	for (int ch_iter = 0; ch_iter < total_channels; ch_iter++){
-		canv_time_Edep->cd(ch_iter+1)->SetLogz(1);
-		th2_hist_ptr = ((TH2*)(gDirectory->FindObjectAny( Form("timeMax_vs_Edep_ch%i", ch_iter) )));
-		th2_hist_ptr->Draw("colz");
-		result_array->Add(th2_hist_ptr);
-	}
-
-	TCanvas *canv_R2_Edep = new TCanvas("canv_R2_Edep", "canv_R2_Edep");
-	canvas_array->Add(canv_R2_Edep);
-	canv_R2_Edep->DivideSquare(total_channels);
-	for (int ch_iter = 0; ch_iter < total_channels; ch_iter++){
-		canv_R2_Edep->cd(ch_iter+1)->SetLogz(1);
-		th2_hist_ptr = ((TH2*)(gDirectory->FindObjectAny( Form("FitR2_vs_Edep_ch%i", ch_iter) )));
-		th2_hist_ptr->Draw("colz");
-		result_array->Add(th2_hist_ptr);
-	}
-
-	TCanvas *canv_Profile = new TCanvas("canv_Profile", "canv_Profile");
-	canvas_array->Add(canv_Profile);
-	th1_hist_ptr = ((TH1*)(gDirectory->FindObjectAny( "EdepProfile" )));
-	th1_hist_ptr->GetYaxis()->SetRangeUser(0, 1.1*th1_hist_ptr->GetBinContent(1));
-	th1_hist_ptr->Draw("hist");
-
-	TFile* file_simm = TFile::Open("/home/nikolay/git_projects/mPSD_test_bench/data/ONi2AGeV_sim/profile_4.00MeV_trshd_10kk.root");
-	TCanvas* canv_sim = (TCanvas*) file_simm->Get("c1");
-	th1_hist_ptr = (TH1F*) canv_sim->GetPrimitive("hEnergyProfile");
-	th1_hist_ptr->SetLineColor(kMagenta);
-	th1_hist_ptr->SetLineWidth(2);
-	canv_Profile->cd();
-	th1_hist_ptr->Draw("same hist");	
-
-	// saving results #####################################################################
-
-	for (Int_t i = 0; i < canvas_array->GetLast (); i++) 
-	    ((TCanvas*) canvas_array->At(i))->SaveAs ((result_file_name + ".pdf(").Data ());
-	((TCanvas*) canvas_array->At (canvas_array->GetLast ()))->SaveAs ((result_file_name + ".pdf)").Data ());
-  	printf("file %s was written\n", (result_file_name + ".pdf").Data());
-
-
-	result_array->Add(canvas_array);
-	TFile *result_file = new TFile((result_file_name + ".root").Data(), "RECREATE");
-	TString start_path = result_array->GetName();
-	result_file->mkdir(start_path.Data());
-	result_file->cd(start_path.Data());
-	TIter nx_iter((TCollection*)(result_array));
-	TObject* obj_ptr;
-	while ( (obj_ptr=(TObjArray*)nx_iter()) )
-	{
-	    if(obj_ptr == nullptr) continue; 
-	    printf("Writing %s object\n", obj_ptr->GetName());
-	    obj_ptr->Write();
-	}
-  	printf("file %s was written\n", (result_file_name + ".root").Data());
-	result_file->Close();
-	delete result_file;
-
-
-	return 0;
+  for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) {
+    th1_hist_ptr =
+      new TH1F(Form("Edep_ch%i", ch_iter), Form("Edep_ch%i", ch_iter), hist_pars[0], hist_pars[1], hist_pars[2]);
+    th1_hist_ptr->SetTitle(Form("Charge channel %i; Edep [MeV]", ch_iter));
 
+    th2_hist_ptr = new TH2F(Form("timeMax_vs_Edep_ch%i", ch_iter), Form("timeMax_vs_Edep_ch%i", ch_iter), 32, 0, 32,
+                            hist_pars[0], hist_pars[1], hist_pars[2]);
+    th2_hist_ptr->SetTitle(Form("TimeMax vs Edep channel %i; TimeMax [12,5ns]; Charge [mV]", ch_iter));
+
+    th2_hist_ptr = new TH2F(Form("FitR2_vs_Edep_ch%i", ch_iter), Form("FitR2_vs_Edep_ch%i", ch_iter), hist_pars[0],
+                            hist_pars[1], hist_pars[2], 200, 0, 2);
+    th2_hist_ptr->SetTitle(Form("FitR2 vs EdepFPGA channel %i; Charge [mV]; R2 []", ch_iter));
+  }
+
+  TString common_selection = Form("(Nhits > %i)", nhits);
+  //draw selection
+  for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) {
+    TString ich_selection = "";
+    //ich_selection += Form("&&(channel_%i.Edep>1.5) ", ch_iter);//dont touch (not filled channels removal)
+    switch (cut_option) {
+      case 0: break;
+      case 1: ich_selection += Form("&&(channel_%i.TimeMax>=4 && channel_%i.TimeMax<=7)", ch_iter, ch_iter); break;
+      case 2:
+        ich_selection += Form("&&(channel_%i.TimeMax>=4 && channel_%i.TimeMax<=7)", ch_iter, ch_iter);
+        ich_selection += Form("&&(channel_%i.FitR2<0.4)", ch_iter);
+        break;
+    }
+
+    TString hist_name = Form("Edep_ch%i", ch_iter);
+    data_tree->Draw(Form("channel_%i.%s>>%s", ch_iter, calc_mode.Data(), hist_name.Data()),
+                    (common_selection + ich_selection).Data(), "", events_to_read);
+
+    hist_name = Form("timeMax_vs_Edep_ch%i", ch_iter);
+    data_tree->Draw(Form("channel_%i.%s:channel_%i.TimeMax>>%s", ch_iter, calc_mode.Data(), ch_iter, hist_name.Data()),
+                    (common_selection + ich_selection).Data(), "", events_to_read);
+
+    hist_name = Form("FitR2_vs_Edep_ch%i", ch_iter);
+    data_tree->Draw(
+      Form("channel_%i.FitR2:channel_%i.EdepFPGA>>%s", ch_iter, ch_iter, /*calc_mode.Data(),*/ hist_name.Data()),
+      (common_selection + ich_selection).Data(), "", events_to_read);
+
+    printf("selection for ch %i: [%s]\n", ch_iter, (common_selection + ich_selection).Data());
+  }
+
+
+  //drawing histogramms
+  for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) {
+    double mip      = 5.0;  //MeV
+    TH1* th1_ch_ptr = ((TH1*) (gDirectory->FindObjectAny(Form("Edep_ch%i", ch_iter))));
+
+    th1_hist_ptr = ((TH1*) (gDirectory->FindObjectAny("EdepProfile")));
+    //th1_hist_ptr->SetBinContent(ch_iter+1, th1_ch_ptr->GetMean());//*th1_ch_ptr->GetEntries()/data_tree->GetEntries());
+    th1_hist_ptr->SetBinContent(ch_iter + 1, th1_ch_ptr->GetMean() * th1_ch_ptr->GetEntries() / temp->GetEntries());
+  }
+
+
+  TCanvas* canv_charge_Edep = new TCanvas("canv_charge_Edep", "canv_charge_Edep");
+  canvas_array->Add(canv_charge_Edep);
+  canv_charge_Edep->DivideSquare(total_channels);
+  for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) {
+    canv_charge_Edep->cd(ch_iter + 1)->SetLogy(1);
+    th1_hist_ptr = ((TH1*) (gDirectory->FindObjectAny(Form("Edep_ch%i", ch_iter))));
+    th1_hist_ptr->Draw();
+    result_array->Add(th1_hist_ptr);
+    int start            = 8;
+    int stop             = 20;
+    Int_t binx_min       = th1_hist_ptr->GetXaxis()->FindBin(start);
+    Int_t binx_max       = th1_hist_ptr->GetXaxis()->FindBin(stop);
+    double data_integral = th1_hist_ptr->Integral(binx_min, binx_max);
+
+    th1_hist_ptr = ((TH1F*) (file_sim->FindObjectAny(Form("hf4_%i", ch_iter + 1))));
+    if (th1_hist_ptr == nullptr) {
+      cout << "no hist" << endl;
+      break;
+    }
+    th1_hist_ptr->SetLineColor(kMagenta);
+    th1_hist_ptr->SetLineWidth(2);
+    binx_min = th1_hist_ptr->GetXaxis()->FindBin(start);
+    binx_max = th1_hist_ptr->GetXaxis()->FindBin(stop);
+    th1_hist_ptr->Scale(data_integral / th1_hist_ptr->Integral(binx_min, binx_max));
+    th1_hist_ptr->Draw("same hist");
+  }
+
+
+  TCanvas* canv_time_Edep = new TCanvas("canv_time_Edep", "canv_time_Edep");
+  canvas_array->Add(canv_time_Edep);
+  canv_time_Edep->DivideSquare(total_channels);
+  for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) {
+    canv_time_Edep->cd(ch_iter + 1)->SetLogz(1);
+    th2_hist_ptr = ((TH2*) (gDirectory->FindObjectAny(Form("timeMax_vs_Edep_ch%i", ch_iter))));
+    th2_hist_ptr->Draw("colz");
+    result_array->Add(th2_hist_ptr);
+  }
+
+  TCanvas* canv_R2_Edep = new TCanvas("canv_R2_Edep", "canv_R2_Edep");
+  canvas_array->Add(canv_R2_Edep);
+  canv_R2_Edep->DivideSquare(total_channels);
+  for (int ch_iter = 0; ch_iter < total_channels; ch_iter++) {
+    canv_R2_Edep->cd(ch_iter + 1)->SetLogz(1);
+    th2_hist_ptr = ((TH2*) (gDirectory->FindObjectAny(Form("FitR2_vs_Edep_ch%i", ch_iter))));
+    th2_hist_ptr->Draw("colz");
+    result_array->Add(th2_hist_ptr);
+  }
+
+  TCanvas* canv_Profile = new TCanvas("canv_Profile", "canv_Profile");
+  canvas_array->Add(canv_Profile);
+  th1_hist_ptr = ((TH1*) (gDirectory->FindObjectAny("EdepProfile")));
+  th1_hist_ptr->GetYaxis()->SetRangeUser(0, 1.1 * th1_hist_ptr->GetBinContent(1));
+  th1_hist_ptr->Draw("hist");
+
+  TFile* file_simm =
+    TFile::Open("/home/nikolay/git_projects/mPSD_test_bench/data/ONi2AGeV_sim/profile_4.00MeV_trshd_10kk.root");
+  TCanvas* canv_sim = (TCanvas*) file_simm->Get("c1");
+  th1_hist_ptr      = (TH1F*) canv_sim->GetPrimitive("hEnergyProfile");
+  th1_hist_ptr->SetLineColor(kMagenta);
+  th1_hist_ptr->SetLineWidth(2);
+  canv_Profile->cd();
+  th1_hist_ptr->Draw("same hist");
+
+  // saving results #####################################################################
+
+  for (Int_t i = 0; i < canvas_array->GetLast(); i++)
+    ((TCanvas*) canvas_array->At(i))->SaveAs((result_file_name + ".pdf(").Data());
+  ((TCanvas*) canvas_array->At(canvas_array->GetLast()))->SaveAs((result_file_name + ".pdf)").Data());
+  printf("file %s was written\n", (result_file_name + ".pdf").Data());
+
+
+  result_array->Add(canvas_array);
+  TFile* result_file = new TFile((result_file_name + ".root").Data(), "RECREATE");
+  TString start_path = result_array->GetName();
+  result_file->mkdir(start_path.Data());
+  result_file->cd(start_path.Data());
+  TIter nx_iter((TCollection*) (result_array));
+  TObject* obj_ptr;
+  while ((obj_ptr = (TObjArray*) nx_iter())) {
+    if (obj_ptr == nullptr) continue;
+    printf("Writing %s object\n", obj_ptr->GetName());
+    obj_ptr->Write();
+  }
+  printf("file %s was written\n", (result_file_name + ".root").Data());
+  result_file->Close();
+  delete result_file;
+
+
+  return 0;
 }
 
 #ifdef __CINT__
- 
+
 #pragma link off all globals;
 #pragma link off all classes;
 #pragma link off all functions;
 #pragma link C++ nestedclasses;
- 
-#pragma link C++ struct data_header_struct+;
-#pragma link C++ struct digi_struct+;
-#endif
 
+#pragma link C++ struct data_header_struct + ;
+#pragma link C++ struct digi_struct + ;
+#endif
diff --git a/macro/psd/event_data_struct.h b/macro/psd/event_data_struct.h
index 0cc92e485c348aef0c638c29a4cc9dc50ceb2c2f..cb1e28cb8cb570d3007cc48e0eedd1be9e4e933a 100755
--- a/macro/psd/event_data_struct.h
+++ b/macro/psd/event_data_struct.h
@@ -1,85 +1,80 @@
-#ifndef EVENT_DATA_STRUCT
-#define EVENT_DATA_STRUCT
-
-#include<TTree.h>
-#include<TString.h>
-#include<TMath.h>
-#include<TObject.h>
-#include<fstream>
-
-
-//data processed from waveform
-struct event_data_struct
-{
-
-    Float_t EdepFPGA;
-    Float_t EdepWfm;
-    Float_t Ampl;
-    Float_t Minimum;
-    Float_t ZL;
-    Float_t Time;
-    Int_t TimeMax;
-    Float_t TimeHalf;
-    Float_t TimeInEvent;
-
-    Float_t FitEdep;
-    Float_t FitAmpl;
-    Float_t FitZL;
-    Float_t FitR2;
-    Float_t FitTimeMax;
-
-    ULong64_t EventTime;
-
-
-    void reset()
-    {
-	EdepFPGA = 0.;
-	EdepWfm = 0.;
-	Ampl = 0.;
-	Minimum = 0.;
-	ZL = 0.;
-	Time = 0.;
-	TimeMax = -1;
-	TimeHalf = -1.;
-	TimeInEvent = -1.;
-
-	FitEdep = 0.;
-	FitAmpl = 0.;
-	FitZL = 0.;
-	FitR2 = 999.;
-	FitTimeMax = -1.;
-
-	EventTime = 0;
-    }
-
-    void Print()
-    {
-	printf("[EdepFPGA %.0f; EdepWfm %.0f; Ampl %.0f; Minumum %.0f; ZL %.2f; Time %.2f; TimeMax %i; TimeHalf %.2f; TimeInEvent %.2f; FitEdep %.2f; FitAmpl %.2f; FitZL %.2f; FitR2 %.2f; FitTimeMax %.2f; EventTime %llu]",
-	       EdepFPGA, EdepWfm, Ampl, Minimum, ZL, Time, TimeMax, TimeHalf, TimeInEvent, FitEdep, FitAmpl, FitZL, FitR2, FitTimeMax, EventTime);
-    }
-
-    static TString GetChName(Int_t channel_num)
-    {
-	return TString::Format("channel_%i", channel_num);
-    }
-
-    TBranch* CreateBranch(TTree *tree, Int_t channel_num)
-    {
-	return tree->Branch(GetChName(channel_num).Data(), this,
-	    "EdepFPGA/F:EdepWfm/F:Ampl/F:Minimum/F:ZL/F:Time/F:TimeMax/I:TimeHalf/F:TimeInEvent/F:FitEdep/F:FitAmpl/F:FitZL/F:FitR2/F:FitTimeMax/F:EventTime/l");
-    }
-
-
-    Int_t SetBranch(TTree *tree, Int_t channel_num)
-    {
-	return tree->SetBranchAddress(GetChName(channel_num).Data(), this);
-    }
-
-};
-
-
-
-
-
-#endif // EVENT_DATA_STRUCT
-
+#ifndef EVENT_DATA_STRUCT
+#define EVENT_DATA_STRUCT
+
+#include <TMath.h>
+#include <TObject.h>
+#include <TString.h>
+#include <TTree.h>
+
+#include <fstream>
+
+
+//data processed from waveform
+struct event_data_struct {
+
+  Float_t EdepFPGA;
+  Float_t EdepWfm;
+  Float_t Ampl;
+  Float_t Minimum;
+  Float_t ZL;
+  Float_t Time;
+  Int_t TimeMax;
+  Float_t TimeHalf;
+  Float_t TimeInEvent;
+
+  Float_t FitEdep;
+  Float_t FitAmpl;
+  Float_t FitZL;
+  Float_t FitR2;
+  Float_t FitTimeMax;
+
+  ULong64_t EventTime;
+
+
+  void reset()
+  {
+    EdepFPGA    = 0.;
+    EdepWfm     = 0.;
+    Ampl        = 0.;
+    Minimum     = 0.;
+    ZL          = 0.;
+    Time        = 0.;
+    TimeMax     = -1;
+    TimeHalf    = -1.;
+    TimeInEvent = -1.;
+
+    FitEdep    = 0.;
+    FitAmpl    = 0.;
+    FitZL      = 0.;
+    FitR2      = 999.;
+    FitTimeMax = -1.;
+
+    EventTime = 0;
+  }
+
+  void Print()
+  {
+    printf("[EdepFPGA %.0f; EdepWfm %.0f; Ampl %.0f; Minumum %.0f; ZL %.2f; Time %.2f; TimeMax %i; TimeHalf %.2f; "
+           "TimeInEvent %.2f; FitEdep %.2f; FitAmpl %.2f; FitZL %.2f; FitR2 %.2f; FitTimeMax %.2f; EventTime %llu]",
+           EdepFPGA, EdepWfm, Ampl, Minimum, ZL, Time, TimeMax, TimeHalf, TimeInEvent, FitEdep, FitAmpl, FitZL, FitR2,
+           FitTimeMax, EventTime);
+  }
+
+  static TString GetChName(Int_t channel_num) { return TString::Format("channel_%i", channel_num); }
+
+  TBranch* CreateBranch(TTree* tree, Int_t channel_num)
+  {
+    return tree->Branch(GetChName(channel_num).Data(), this,
+                        "EdepFPGA/F:EdepWfm/F:Ampl/F:Minimum/F:ZL/F:Time/F:TimeMax/I:TimeHalf/F:TimeInEvent/F:FitEdep/"
+                        "F:FitAmpl/F:FitZL/F:FitR2/F:FitTimeMax/F:EventTime/l");
+  }
+
+
+  Int_t SetBranch(TTree* tree, Int_t channel_num)
+  {
+    return tree->SetBranchAddress(GetChName(channel_num).Data(), this);
+  }
+};
+
+
+#endif  // EVENT_DATA_STRUCT