diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx index 8e25260c22852da47032736e0de72b7adadde15c..9eaf7e86fabf7feb864cc2bda87af5fe062b654f 100644 --- a/Projects/AlPhaPha/2024/Analysis.cxx +++ b/Projects/AlPhaPha/2024/Analysis.cxx @@ -473,7 +473,8 @@ void Analysis::VamosAnalysis(){ if(FPMW->Xf!=-1000){ - FF_DE = IC->DE; + FF_DE = IC->DE; + FF_DE_IC14 = 0.5*(IC->fIC_raw[1] + IC->fIC_raw[2] + IC->fIC_raw[3]) + IC->fIC_raw[4] ; FF_Eres = IC->Eres; Tracking->CalculateReconstruction(FPMW->Xf, 1000*FPMW->Thetaf, m_Brho_ref, FF_Brho, Theta, FF_Path); @@ -483,8 +484,8 @@ void Analysis::VamosAnalysis(){ FF_Y3 = FPMW->PositionY[2]; //FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000); - FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000); - FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf/1000); + FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif); + FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf); // T13 // double path1 = FPMW->GetDetectorPositionZ(0)/10./cos(FPMW->Theta_in)/cos(FPMW->Phi_in); @@ -600,6 +601,7 @@ void Analysis::InitOutputBranch(){ RootOutput::getInstance()->GetTree()->Branch("Vamos_Time_Target",&Vamos_Time_Target,"Vamos_Time_Target/D"); RootOutput::getInstance()->GetTree()->Branch("FF_DE",&FF_DE,"FF_DE/D"); + RootOutput::getInstance()->GetTree()->Branch("FF_DE_IC14",&FF_DE_IC14,"FF_DE_IC14/D"); RootOutput::getInstance()->GetTree()->Branch("FF_Eres",&FF_Eres,"FF_Eres/D"); RootOutput::getInstance()->GetTree()->Branch("FF_Z",&FF_Z,"FF_Z/D"); RootOutput::getInstance()->GetTree()->Branch("FF_Theta",&FF_Theta,"FF_Theta/D"); diff --git a/Projects/AlPhaPha/2024/Analysis.h b/Projects/AlPhaPha/2024/Analysis.h index 7a4bbb2823f7c0d31cb6734c7d5bfae2c74fa979..989da83a092106ca2e65d6a0a830bdf93cb61c3e 100644 --- a/Projects/AlPhaPha/2024/Analysis.h +++ b/Projects/AlPhaPha/2024/Analysis.h @@ -121,6 +121,7 @@ class Analysis: public NPL::VAnalysis{ double beta_cm_ff; double FF_DE; + double FF_DE_IC14; double FF_Eres; double FF_Z; double FF_Brho; @@ -209,10 +210,10 @@ class Analysis: public NPL::VAnalysis{ double m_T14_Offset[20]; // for masses - Int_t MTOF_FP0_T0VN[20]; - Int_t MTOF_FP0_T1VN[20]; - Int_t MTOF_FP1_T0VN[20]; - Int_t MTOF_FP1_T1VN[20]; + UShort_t MTOF_FP0_T0VN[20]; + UShort_t MTOF_FP0_T1VN[20]; + UShort_t MTOF_FP1_T0VN[20]; + UShort_t MTOF_FP1_T1VN[20]; Int_t MTOF_FP0_T0VM; Int_t MTOF_FP0_T1VM; diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C index 68d3a24a0d5893da0f3e42a45fbcdae50171ca2f..5395615875b385464ed32f67651b779a8a3b40cd 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C @@ -56,7 +56,7 @@ void CorrectXY(){ //int Nentries = chain->GetEntries(); - int Nentries = 1000000; + int Nentries = 10000000; auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { @@ -80,8 +80,14 @@ void CorrectXY(){ if(IC->fIC_raw[8] >0 && ICRatio <= 8 && ICRatio >0.1 ) { - Double_t ICRatioCorr = ICRatio * 1.3 / evaluator.Evaluate(FF_IC_X,FF_DriftTime,true); - if (ICRatioCorr >100 ) ICRatioCorr = 1.2; + Double_t PolX = -4.24954 * 1e-7 *FF_IC_X*FF_IC_X - 8.62213 * 1e-5 * FF_IC_X + 1.37; + Double_t ICRatioCorr = ICRatio * PolX / evaluator.Evaluate(FF_IC_X,FF_DriftTime,true); + if (ICRatioCorr > 1.45 ){ + ICRatioCorr = ICRatio * PolX / evaluator.Evaluate(FF_IC_X,FF_DriftTime,false); + if (ICRatioCorr >100 ){ + ICRatioCorr = ICRatio; + } + } Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio); PxyzCorr->Fill(FF_IC_X,FF_DriftTime,ICRatioCorr); } diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C index 21101091a8d15f3b790ce6d385e3b33e95ab8b50..244b533f582d472fa77bb4f49a45bda1d74912e1 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C @@ -103,8 +103,9 @@ void DECorr(bool cut = false, bool spline = false) { TH2F* hDE_Ebis = new TH2F("DE_Ebis","DE_Ebis",1000,0,22000,1000,0,24000); - TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",1000,-1000,1000,1000,0,22000); - TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,22000); + TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",1000,-1000,1000,1000,0,28000); + TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,28000); + TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,28000); TH2F* hDE_Y_splined_nocut = new TH2F("DE_Ysplined_nocut","DE_Ysplined_nocut",1000,-1000,1000,1000,0,22000); TH2F* hIC_Y = new TH2F("IC_Y","IC_Y",1000,-1000,1000,1000,0,22000); TH2F* hIC_Y_splined = new TH2F("IC_Ysplined","IC_Ysplined",1000,-1000,1000,1000,0,22000); @@ -147,10 +148,18 @@ void DECorr(bool cut = false, bool spline = false) { UShort_t FPMW_Section = Time->GetSection_MWPC3(0); double FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + Double_t PolX = -4.24954 * 1e-7 *FF_IC_X*FF_IC_X - 8.62213 * 1e-5 * FF_IC_X + 1.37; Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; - Double_t ICRatioCorr = ICRatio *1.3 / Profile.Evaluate(FF_IC_X,FF_DriftTime,true); - Double_t ICcorr_Y = IC->fIC_raw[0] / 1.3 * Profile.Evaluate(FF_IC_X,FF_DriftTime,true); - + Double_t ICRatioCorr = ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,true); + Double_t ICcorr_Y = IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,true); + + if (ICRatioCorr >1.4){ + ICRatioCorr = ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + ICcorr_Y =IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + if (ICRatioCorr >100) { + ICcorr_Y = IC->fIC_raw[0]; + } + } double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0; double E =0; @@ -188,7 +197,6 @@ void DECorr(bool cut = false, bool spline = false) { hDE_E->Fill(E,DE); hDE_E_splined->Fill(E,DE_splined); hDE_Ebis->Fill(E,DE_Bis); - hDE_V->Fill(FF_V13,DE_splined); //******* Coor DE ************ @@ -218,8 +226,8 @@ void DECorr(bool cut = false, bool spline = false) { // DE_Y in a cut - if (cut == true && CutV) { - if ( CutV) { + if (cut == true ) { + if ( CutV && E>6000) { hDE_Y_corr_nocut->Fill(FF_DriftTime,DE_corr); hDE_Y_splined_nocut->Fill(FF_DriftTime,DE_splined); hDE_Y->Fill(FF_DriftTime,DE); @@ -230,13 +238,15 @@ void DECorr(bool cut = false, bool spline = false) { hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y); } }//end cut - else { - hDE_Y->Fill(FF_DriftTime,DE); - hDE_Y_splined->Fill(FF_DriftTime,DE_splined); - hDE_Y_corr->Fill(FF_DriftTime,DE_corr); + else { + if(E>6000){ + hDE_Y->Fill(FF_DriftTime,DE); + hDE_Y_splined->Fill(FF_DriftTime,DE_splined); + hDE_Y_corr->Fill(FF_DriftTime,DE_corr); - hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]); - hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y); + hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]); + hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y); + } } if (cut == true && CutVbis) { @@ -283,12 +293,21 @@ void DECorr(bool cut = false, bool spline = false) { gPad->SetLogz(); hIC_Y_splined->ProfileX()->Draw(); + TCanvas* c6 = new TCanvas("c6","c6",1500,1000); + c6->Divide(2); + c6->cd(1); + gPad->SetLogz(); + hDE_Y_splined->ProfileX()->Draw(); + c6->cd(2); + gPad->SetLogz(); + hDE_Y_corr->ProfileX()->Draw(); + TCanvas *c4 = new TCanvas("c4","c4",1500,1000); c4->Divide(2); c4->cd(1); - hDE_Y_splined_nocut->Draw(); + hDE_Y->Draw(); c4->cd(2); - hDE_Y_corr_nocut->Draw(); + hDE_Y_splined->Draw(); TCanvas *c5 = new TCanvas("c5","c5",1500,1000); hDE_E->Draw("colz"); diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root index e181a9879429be4a95e61fd1d388837306f078a2..197dc67653bb32eee4bcb8e07a7de6388548e1f0 100644 Binary files a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root and b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root differ diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root index 330cfde1c7a3895b11fcdc11f57c399d884723ca..52c11049c4584e46fe96884d7acf45fac2b53da4 100644 Binary files a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root and b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root differ diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C index b8fda7cd0ad7bd7aef63feefbaef0ff10fb1058e..08266ca5ef33f884d2189a136bdf4018d8a4d1b5 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C @@ -1,6 +1,7 @@ #include "TICPhysics.h" #include "TTimeData.h" #include <TChain.h> +#include <TF1.h> #include <TFile.h> #include <TH2.h> #include <TH3.h> @@ -47,10 +48,11 @@ void VerifCorrelation(){ TH3F *ICXY = new TH3F("ICXY","ICXY",100,-550,400,100,-1000,1000,100,0,2); + TH2F *ICX = new TH2F("ICX","ICX",1000,-500,400,1000,0,2); TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-550.0,400.0,100,-900.0,500.0); - int Nentries = chain->GetEntries(); - //int Nentries = 1000000; + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { @@ -76,6 +78,10 @@ void VerifCorrelation(){ if(IC->fIC_raw[8] >0 && ICRatio <= 3 && ICRatio >0.1 ) { ICXY->Fill(FF_IC_X,FF_DriftTime,ICRatio); Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio); + + if (FF_IC_X > -500 && FF_IC_X < 400 && FF_IC_Y > -100 && FF_IC_Y <100 ){ + ICX->Fill(FF_IC_X, ICRatio); + } } } @@ -101,6 +107,28 @@ void VerifCorrelation(){ Pxyz->SetMaximum(1.5); Pxyz->Draw("GL SURF2"); // Configure the 3D view + + auto func = [](double *x, double *p) { + if (x[0] < 200 && x[0] > -150) { + TF1::RejectPoint(); + } + return p[0] + p[1]*x[0] + p[2]*x[0]*x[0] ; + }; + + TF1 *f1 = new TF1("f1",func,-470,400,3); + + TCanvas *c2 = new TCanvas("c2","c2"); + c2->Divide(2); + c2->cd(1); + gStyle->SetPalette(kRainBow); + ICX->SetXTitle("X"); + ICX->SetYTitle("Ratio"); + ICX->Draw(); + c2->cd(2); + ICX->ProfileX()->Draw("GL"); + ICX->ProfileX()->Fit(f1,"R"); + + TFile *ofile = new TFile("Output/RatioProfile.root","recreate"); Pxyz->Write(); diff --git a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx index 67cdf48e7998a346a967d7822d3081dec826d17d..b2c2aef96162fe765f2eebaedcd57f9132737212 100644 --- a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx +++ b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx @@ -90,14 +90,13 @@ void ToffGenerator(bool Create = true ){ //=========================================================================================================== // Loop on entries //=========================================================================================================== - int Nentries = chain->GetEntries(); - //int Nentries = 1000000; + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { chain->GetEntry(e); - if (e % 100000 == 0 && e > 0 ) { auto now = std::chrono::high_resolution_clock::now(); std::chrono::duration<double> elapsed = now - start; @@ -112,10 +111,13 @@ void ToffGenerator(bool Create = true ){ M14 = Time->GetMWPC14Mult(); M23 = Time->GetMWPC23Mult(); M24 = Time->GetMWPC24Mult(); - - + if (M23 == 2){ + cout << M23 << " "<< S23[0]<< " " << S23[1]<< endl; + } if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){ + cout << S13[0]<< endl; vector<int> Pos = SortSection(S13); + cout << S13[0] << endl; hToff13->Fill(S13[0], Time->GetTime_MWPC13(Pos[0]) - Time->GetTime_MWPC13(Pos[1]) ); hToffOnline13->Fill(S13[0], (Time->GetTime_MWPC13(Pos[0]) - Toff[S13[0]]) -( Time->GetTime_MWPC13(Pos[1]) -Toff[S13[1]] )); @@ -383,9 +385,8 @@ void ToffGenerator(bool Create = true ){ auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { - chain->GetEntry(e); - + if (e % 100000 == 0 && e > 0 ) { auto now = std::chrono::high_resolution_clock::now(); std::chrono::duration<double> elapsed = now - start; @@ -404,7 +405,6 @@ void ToffGenerator(bool Create = true ){ if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){ - vector<int> Pos = SortSection(S13); hCorrToff13->Fill(S13[0],(Time->GetTime_MWPC13(Pos[0]) - double(Time->GetTS_MWPC13(Pos[0]))+ Toff13.at(S13[0])) - (Time->GetTime_MWPC13(Pos[1]) - double(Time->GetTS_MWPC13(Pos[1]))+ Toff13.at(S13[1]))); }