1#ifndef ALCOR_UTILITYFINEANALYSIS_H
2#define ALCOR_UTILITYFINEANALYSIS_H
33TF1*
fine_analysis_fit_function =
new TF1(
"fine_analysis_fit_function",
"[0]*(1./(exp((x-[1])/[2])+1))*(1./(exp(([3]-x)/[4])+1))", 20., 150.);
38template<
typename TH2_Type = TH2F >
40template<
typename TH2_Type = TH2F >
42template<
typename TH2_Type = TH2F >
43TH2_Type*
run_fine_tune_analysis ( TString kRunTag, TString kOutputFileName, TString kOutputGraphics,
bool kRecalculate );
50template<
typename TH2_Type = TH2F >
52template<
typename TH2_Type = TH2F >
61template<
typename TH2_Type = TH2F >
64template<
typename TH2_Type = TH2F >
68double calculate_calibrated_phase (
int kFineParameter,
double kCalibrationMin,
double kCalibrationMax,
double kCalibrationOffset );
71template<
typename TH1_Type = TH1F >
72int get_fit_bump ( TH1_Type* histo,
double critical_value,
int bin_step );
77template<
typename TH2_Type = TH2F >
80 ( std::vector<TString> kInputFileNames, TString kRunTag, TString kOutputFileName,
bool kRecalculate ) {
84 cout <<
"[INFO] Looking if fine tune histogram for tuning is cached" << endl;
85 if ( kFileOut->IsOpen() && !kRecalculate ) { cout <<
"[INFO] Found! Using cached" << endl;
return (TH2F*)(kFileOut->Get(
"hFine_All")); }
86 else { cout <<
"[INFO] Not found! Re-generating" << endl;
delete kFileOut; }
90 for (
auto kCurrentFileName : kInputFileNames ) {
91 std::cout <<
"[INFO] Opening file: " << kCurrentFileName.Data() << std::endl;
93 auto kCurrentFile = TFile::Open(kCurrentFileName);
94 if ( !kCurrentFile || !kCurrentFile->IsOpen() ) {
95 std::cout <<
"[WARNING] Opening file: " << kCurrentFileName.Data() <<
" failed!" << std::endl;
100 TTree* kCurrentTree = (TTree *)kCurrentFile->Get(
"alcor");
101 if ( !kCurrentTree ) {
102 std::cout <<
"[WARNING] No \"alcor\" tree in file: " << kCurrentFileName.Data() <<
". Loading failed!" << std::endl;
106 auto nEvents = kCurrentTree->GetEntries();
108 for (
int iEv = 0; iEv < nEvents; ++iEv) {
109 kCurrentTree->GetEntry(iEv);
111 hFine_All->Fill( iCurrentIndex, kCurrentData.
fine);
113 kCurrentFile->Close();
116 if ( kOutputFileName.Length() != 0 ) {
118 kFileOut =
new TFile( kOutputFileName,
"RECREATE" );
130template<
typename TH2_Type = TH2F >
133 ( TString kRunTag, TString kOutputFileName,
bool kRecalculate ) {
134 std::vector<TString> kInputFileNames;
135 for ( Int_t iFile = 0; iFile < 24; iFile++ ) { kInputFileNames.push_back(Form(
intput_rawdata_decoded_file,kRunTag.Data(),iFile)); }
139template<
typename TH2_Type = TH2F >
146 cout <<
"[INFO] Looking if fine tune histogram for tuning is cached" <<
endl;
148 else {
cout <<
"[INFO] Not found! Re-generating" <<
endl;
delete kFileOut; }
150 gROOT->SetBatch(
true);
246 gROOT->SetBatch(
false);
271 if (
chip < 4 )
continue;
281 if (
phase <= -9.9 )
continue;
303 if (
phase <= -9.9 )
continue;
320 cout <<
"[INFO] Looking if fine tune offset histogram for tuning is cached" <<
endl;
322 else {
cout <<
"[INFO] Not found! Re-generating" <<
endl;
delete kFileOut; }
326 gROOT->SetBatch(
true);
329 TH3_Type*
hFine_Check_Tune_Phas =
new TH3_Type(
"hFine_Check_Tune",
";index;#Delta t",
kGlobalIndexRange, 0,
kGlobalIndexRange, 1000, -50, 50, 400, -2, +2 );
330 TH3_Type*
hFine_Check_Tune_Fine =
new TH3_Type(
"hFine_Check_Raw_",
";index;#Delta t",
kGlobalIndexRange, 0,
kGlobalIndexRange, 1000, -50, 50,
kFineRange, 0,
kFineRange );
331 TH3_Type*
hFine_Check_TRaw_Phas =
new TH3_Type(
"hFine_Check_Tune",
";index;#Delta t",
kGlobalIndexRange, 0,
kGlobalIndexRange, 1000, -50, 50, 400, -2, +2 );
332 TH3_Type*
hFine_Check_TRaw_Fine =
new TH3_Type(
"hFine_Check_Raw_",
";index;#Delta t",
kGlobalIndexRange, 0,
kGlobalIndexRange, 1000, -50, 50,
kFineRange, 0,
kFineRange );
390 gROOT->SetBatch(
false);
403template<
typename TH2_Type = TH2F >
415template<
typename TH2_Type = TH2F >
484template<
typename TH1_Type = TH1F >
490 double y1 =
histo->GetBinContent(
j);
498 double y1 =
histo->GetBinContent(
j);
510template<
typename TH3_Type = TH3F >
529 if (
chip < 4 )
continue;
537 if (
phase <= -9.9 )
continue;
580 hTune_Fine->SetTitle(
"t_{i}-t_{ref} both tuned vs fine par.");
581 hTune_Fine->GetYaxis()->SetTitle(
"t_{i}-t_{ref} (ns)");
582 hTune_Fine->GetXaxis()->SetTitle(
"fine par. a.u.");
588 hTune_Phas->SetTitle(
"t_{i}-t_{ref} both tuned vs calib. phase");
589 hTune_Phas->GetYaxis()->SetTitle(
"t_{i}-t_{ref} (ns)");
590 hTune_Phas->GetXaxis()->SetTitle(
"phase a.u.");
596 hTRaw_Fine->SetTitle(
"t_{i}-t_{ref} only ref tuned vs fine par.");
597 hTRaw_Fine->GetYaxis()->SetTitle(
"t_{i}-t_{ref} (ns)");
598 hTRaw_Fine->GetXaxis()->SetTitle(
"fine par. a.u.");
604 hTRaw_Phas->SetTitle(
"t_{i}-t_{ref} only ref tuned vs calib. phase");
605 hTRaw_Phas->GetYaxis()->SetTitle(
"t_{i}-t_{ref} (ns)");
606 hTRaw_Phas->GetXaxis()->SetTitle(
"phase a.u.");
616 gROOT->SetBatch(
false);
void set_fine_calibration(global_identifier_t kFilters, double kCalibrationMin, double kCalibrationMax, double kCalibrationOffset)
Definition fine_analysis.h:55
TH2_Type * build_fine_tune_raw_histogram(std::vector< TString > kInputFileNames, TString kRunTag, TString kOutputFileName, bool kRecalculate)
Functions -------------------------------------------------------------------------------------------...
Definition fine_analysis.h:80
const TString output_preprocess_fine_analysis_file_rslt
Definition fine_analysis.h:28
TH2_Type * run_fine_tune_analysis(TString kRunTag, TString kOutputFileName, TString kOutputGraphics, bool kRecalculate)
Definition fine_analysis.h:142
const TString output_preprocess_fine_analysis_file_offset_rslt
Definition fine_analysis.h:30
std::map< global_identifier_t, kFineTuneParamsType > kFineTuneParameters
Definition fine_analysis.h:17
double get_fine_calibration_offset(global_identifier_t kFilters)
Definition fine_analysis.h:49
std::map< TString, TH2F * > kFineTuneRawHistograms
Definition fine_analysis.h:18
void check_fine_tune_effect(TString kRunTag, TH3_Type &hFine_Check_Tune_Phas, TH3_Type &hFine_Check_Tune_Fine, TH3_Type &hFine_Check_TRaw_Phas, TH3_Type &hFine_Check_TRaw_Fine)
NEW THINGS TO INTEGRATE ------—.
Definition fine_analysis.h:513
TH2_Type * run_fine_tune_offset_analysis(TString kRunTag, TString kOutputFileName, TString kOutputGraphics, bool kRecalculate)
Definition fine_analysis.h:316
const TString output_preprocess_fine_analysis_directory
Definition fine_analysis.h:26
void raw_delta_fine_tune_offset(TString kRunTag, int kGlobalIndex, TH2F &hFine_Offset_All)
Definition fine_analysis.h:252
const float kEspilonOffMean
Definition fine_analysis.h:25
int get_fit_bump(TH1_Type *histo, double critical_value, int bin_step)
@Chiara Fraticelli
Definition fine_analysis.h:487
TF1 * fine_analysis_fit_function
Definition fine_analysis.h:33
double get_fine_calibration_max(global_identifier_t kFilters)
Definition fine_analysis.h:48
const TString output_preprocess_fine_analysis_file_offset_raw
Definition fine_analysis.h:29
const TString output_preprocess_fine_analysis_file_check
Definition fine_analysis.h:31
TH2_Type * get_fine_tune_parameters(TString kRunTag)
Get stored fine tune parameters from calibration file.
Definition fine_analysis.h:406
double calculate_calibrated_phase(int kFineParameter, double kCalibrationMin, double kCalibrationMax, double kCalibrationOffset)
— — Calibration function
Definition fine_analysis.h:465
void set_fine_calibration_offset(global_identifier_t kFilters, double kCalibrationOffset)
Definition fine_analysis.h:58
void set_fine_analysis_fit_function(TH1D *histo, int riseThreshold=1, int dropThreshold=1, int max_step=-3, int min_step=3)
@Chiara Fraticelli
Definition fine_analysis.h:435
std::tuple< double, double, double > kFineTuneParamsType
Data Structures -------------------------------------------------------------------------------------...
Definition fine_analysis.h:16
const float kEspilonOffsets
Definition fine_analysis.h:24
void set_fine_tune_raw_histogram(TString kRunTag, TH2_Type *kFineTuneRawHistogram)
Definition fine_analysis.h:62
bool kIgnoreFix
Variables -------------------------------------------------------------------------------------------...
Definition fine_analysis.h:22
const TString output_preprocess_fine_analysis_graphics_dir
Definition fine_analysis.h:32
const int kMaximumOffsetCalibIteration
Definition fine_analysis.h:23
TH2_Type * get_fine_tune_raw_histogram(TString kRunTag)
Get the raw histograms for calibration.
Definition fine_analysis.h:418
void set_fine_calibration_max(global_identifier_t kFilters, double kCalibrationMax)
Definition fine_analysis.h:57
kFineTuneParamsType get_fine_calibration(global_identifier_t kFilters)
— — Getter & Setters
Definition fine_analysis.h:398
void set_fine_calibration_min(global_identifier_t kFilters, double kCalibrationMin)
Definition fine_analysis.h:56
double get_fine_calibration_min(global_identifier_t kFilters)
Definition fine_analysis.h:47
const TString output_preprocess_fine_analysis_file_raw
Definition fine_analysis.h:27
Definition analysis_utils.h:20
std::vector< std::string > timing_filenames
Definition analysis_utils.h:83
const int frame_size
Variables -------------------------------------------------------------------------------------------...
Definition analysis_utils.h:53
int get_dochannel(int pixel, int column)
— Implementation — — Getter & Setters
Definition analysis_utils.h:121
const TString output_preprocess_directory
Definition analysis_utils.h:63
void load_tree(TTree *kInputTree, data_t &kReadData)
Definition analysis_utils.h:178
bool populate_framed_data(framed_data_t &framed_data, std::string dirname, std::vector< std::string > filenames=all_filenames, int frame_size=1024)
Definition analysis_utils.h:192
std::tuple< Int_t, Int_t, Int_t, Int_t > get_full_info(Int_t iIndex)
Definition analysis_utils.h:158
const Int_t kGlobalIndexTiming_End
Definition analysis_utils.h:56
const TString intput_rawdata_decoded_file_dir
Definition analysis_utils.h:61
const Int_t kGlobalIndexRange
Definition analysis_utils.h:54
const Int_t kFineRange
— Finetune analysis
Definition analysis_utils.h:59
const double rollover_to_ns
Definition analysis_utils.h:73
int get_global_index(int fifo, int pixel, int column, int tdc, bool kUseFIFO=true)
Definition analysis_utils.h:138
const TString intput_rawdata_decoded_file
Definition analysis_utils.h:62
const double coarse_to_ns
Definition analysis_utils.h:68
std::tuple< TString, int > global_identifier_t
Definition analysis_utils.h:49
std::map< int, spill_data_t > framed_data_t
Definition analysis_utils.h:48
const Int_t kGlobalIndexTiming_Start
Definition analysis_utils.h:55
Data Structures — ALCOR output structure.
Definition analysis_utils.h:23
int fifo
Definition analysis_utils.h:24
int pixel
Definition analysis_utils.h:28
int column
Definition analysis_utils.h:27
int tdc
Definition analysis_utils.h:29
int fine
Definition analysis_utils.h:32