diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx index 2c498aff8e3a126fbfd6db5f40a6a40431f278a8..bf26e5986f16c14b3cd55f906b61480e970eff4a 100644 --- a/Projects/AlPhaPha/2024/Analysis.cxx +++ b/Projects/AlPhaPha/2024/Analysis.cxx @@ -489,14 +489,32 @@ void Analysis::VamosAnalysis(){ double path1 = FPMW->GetDetectorPositionZ(0)/10./cos(FPMW->Theta_in)/cos(FPMW->Phi_in); double path2 = (FPMW->GetDetectorPositionZ(2)-7600)/10./cos(FPMW->Thetaf); - //Online + //Toff + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "macro/mwpc/Toff/output/Toff13.txt"; + const char* Path14 = "macro/mwpc/Toff/output/Toff14.txt"; + const char* Path23 = "macro/mwpc/Toff/output/Toff23.txt"; + const char* Path24 = "macro/mwpc/Toff/output/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3}; // To know time of electron drift in a section of the chio for (int seg = 0 ; seg < IC->fIC_TS.size() ; seg++){ - FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - (Time->GetTime_MWPC14(0) -Time->GetTime_MWPC13(0)))); - + if (FPMW_Section != 0){ + FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - ((Time->GetTime_MWPC14(0)-Toff14.at(FPMW_Section-1)) - (Time->GetTime_MWPC13(0)- Toff13.at(FPMW_Section-1))))); + } + else { + FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - ((Time->GetTime_MWPC14(0)) - (Time->GetTime_MWPC13(0))))); + } } + + + + FF_T13 = - MTOF_FP0_T0V[0] + Toff[FPMWPat]; FF_D13 = FF_Path - path1 + path2; FF_V13 = FF_D13/FF_T13; @@ -516,8 +534,29 @@ void Analysis::VamosAnalysis(){ else{ FPMW_Section = -1; } + } +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} //////////////////////////////////////////////////////////////////////////////// void Analysis::InitOutputBranch(){ diff --git a/Projects/AlPhaPha/2024/Analysis.h b/Projects/AlPhaPha/2024/Analysis.h index 23009fd59df229da305c3183b6b08f5fa170df01..412d5d2aa4d141d1db61a986c1f8f22d0fcd469c 100644 --- a/Projects/AlPhaPha/2024/Analysis.h +++ b/Projects/AlPhaPha/2024/Analysis.h @@ -54,6 +54,7 @@ class Analysis: public NPL::VAnalysis{ void LoadCalibParameter(); void PistaAnalysis(); void VamosAnalysis(); + vector<double> TxtToVector(const char* Path); void ExogamAnalysis(); void TwoAlphaAnalysis(); void ReadAnalysisConfig();