From 56a6389b4f2051c3d8ca3944d559952b8630728a Mon Sep 17 00:00:00 2001 From: vsitaraman Date: Mon, 27 Jan 2025 16:34:39 -0500 Subject: [PATCH] modified: Analyzer.C modified the analyser to include gain matching for the anodes and the cathodes modified: FitHistogramsWithTSpectrum_Sequential_Improved.C modified: MatchAndPlotCentroids.C modified: centroids.txt modified: slope_intercept_results.txt --- Analyzer.C | 42 ++++++++++++++++++- ...togramsWithTSpectrum_Sequential_Improved.C | 2 +- MatchAndPlotCentroids.C | 7 ++-- centroids.txt | 8 ++++ slope_intercept_results.txt | 4 +- 5 files changed, 56 insertions(+), 7 deletions(-) diff --git a/Analyzer.C b/Analyzer.C index 5942dc3..9a16e47 100644 --- a/Analyzer.C +++ b/Analyzer.C @@ -33,6 +33,7 @@ TH2F *hqqqVpcE; TH2F *hsx3VpcE; TH2F *hanVScatsum; TH2F *hanVScatsum_a[24]; +TH1F *hPC_E[48]; TH1F *hAnodeMultiplicity; int padID = 0; @@ -91,6 +92,12 @@ void Analyzer::Begin(TTree * /*tree*/) TString histTitle = Form("Anode %d vs Cathode Sum; Anode E; Cathode Sum E", i); hanVScatsum_a[i] = new TH2F(histName, histTitle, 400, 0, 10000, 400, 0, 16000); } + for (int i = 0; i < 48; i++) + { + TString histName = Form("hCathode_%d", i); + TString histTitle = Form("Cathode_E_%d;", i); + hPC_E[i] = new TH1F(histName, histTitle, 3200, 0, 32000); + } sx3_contr.ConstructGeo(); pw_contr.ConstructGeo(); @@ -105,6 +112,8 @@ void Analyzer::Begin(TTree * /*tree*/) { std::stringstream ss(line); ss >> index >> slope >> intercept; + // wires 37, 39, 44 have fit data that is incorrect or not present, they have thus been set to 1,0 (slope, intercept) for convenience + // wire 19 the 4th point was genereated using the slope of the line produced uising the other 3 points from the wire 1 vs wire 19 plot if (index >= 0 && index <= 47) { slopeInterceptMap[index] = std::make_pair(slope, intercept); @@ -328,7 +337,20 @@ Bool_t Analyzer::Process(Long64_t entry) { if (pc.e[i] > 100) + { ID.push_back(std::pair(pc.id[i], i)); + if (pc.index[i] >= 0 && pc.index[i] < 48 && hPC_E[pc.index[i]] != nullptr) + { + // if (pc.index[i] >= 24 && pc.index[i] < 48) { + hPC_E[pc.index[i]]->Fill(pc.e[i]); + } + + // } + else + { + printf("Warning: Invalid index %d or null pointer detected!\n", pc.index[i]); + } + } if (pc.e[i] > 100) E.push_back(std::pair(pc.index[i], pc.e[i])); @@ -353,7 +375,6 @@ Bool_t Analyzer::Process(Long64_t entry) // printf("index: %d, New cathode energy: %d \n",pc.index[i], pc.e[i]); } hpcIndexVE_GM->Fill(pc.index[i], pc.e[i]); - } } @@ -707,4 +728,23 @@ void Analyzer::Terminate() canvas->cd(padID)->SetGrid(1); // hZProj->Draw(); hanVScatsum->Draw("colz"); + + TFile *outRoot = new TFile("Histograms.root", "RECREATE"); + + if (!outRoot->IsOpen()) + { + std::cerr << "Error opening file for writing!" << std::endl; + return; + } + + // Loop through histograms and write them to the ROOT file + for (int i = 0; i < 48; i++) + { + if (hPC_E[i] != nullptr) + { + hPC_E[i]->Write(); // Write histogram to file + } + } + + outRoot->Close(); } diff --git a/FitHistogramsWithTSpectrum_Sequential_Improved.C b/FitHistogramsWithTSpectrum_Sequential_Improved.C index fc1d2a5..1462a21 100644 --- a/FitHistogramsWithTSpectrum_Sequential_Improved.C +++ b/FitHistogramsWithTSpectrum_Sequential_Improved.C @@ -10,7 +10,7 @@ #include void FitHistogramsWithTSpectrum_Sequential_Improved() { - TFile *inputFile = new TFile("../Histograms_anodes.root", "READ"); + TFile *inputFile = new TFile("Histograms_anodes.root", "READ"); if (!inputFile || inputFile->IsZombie()) { std::cerr << "Error opening the input file!" << std::endl; return; diff --git a/MatchAndPlotCentroids.C b/MatchAndPlotCentroids.C index 4bcface..333675d 100644 --- a/MatchAndPlotCentroids.C +++ b/MatchAndPlotCentroids.C @@ -49,9 +49,10 @@ void MatchAndPlotCentroids() { } outputFile << "Histogram Number\tSlope\tIntercept\n"; // Loop through histograms 25 to 47 - for (int targetHist = 0; targetHist <= 23; ++targetHist) { + for (int targetHist = 0; targetHist <= 23; targetHist++) { // Ensure the target histogram exists and matches in peak numbers if (centroidData.find(targetHist) == centroidData.end() || centroidData[targetHist].size() != referenceCentroids.size()) { + //4th cnetroid data point for 19 was generated using the 3 datqa points for the slope of wires 0 and 19 std::cout << "Skipping Histogram " << targetHist << " due to mismatched or missing data." << std::endl; continue; } @@ -67,8 +68,8 @@ void MatchAndPlotCentroids() { } } - if (xValues.size() < 4) { - std::cout << "Skipping Histogram " << targetHist << " as it has less than 4 matching centroids." << std::endl; + if (xValues.size() < 3) { + std::cout << "Skipping Histogram " << targetHist << " as it has less than 3 matching centroids." << std::endl; continue; } diff --git a/centroids.txt b/centroids.txt index dc2d6d4..1544379 100644 --- a/centroids.txt +++ b/centroids.txt @@ -1,4 +1,8 @@ HistogramIndex PeakNumber Centroid Amplitude Sigma +0 1 991.118 +0 2 2026.83 +0 3 3060.26 +0 4 4092.45 1 1 922.213 1 2 1885.55 1 3 2845.53 @@ -71,6 +75,10 @@ HistogramIndex PeakNumber Centroid Amplitude Sigma 18 2 1990.64 18 3 3005.46 18 4 4048.99 +19 1 1082.91 +19 2 2194.08 +19 3 3303.65 +19 4 4411.32 20 1 912.778 20 2 1866.83 20 3 2819.21 diff --git a/slope_intercept_results.txt b/slope_intercept_results.txt index d8d6804..ae08dbb 100644 --- a/slope_intercept_results.txt +++ b/slope_intercept_results.txt @@ -1,5 +1,5 @@ Histogram Number Slope Intercept -0 1 0 +0 0.931015 -1.35431 1 1 -1.87356e-10 2 0.964185 1.49989 3 0.92638 -1.30621 @@ -18,7 +18,7 @@ Histogram Number Slope Intercept 16 0.95263 -0.404053 17 0.90953 4.82833 18 0.940277 10.3629 -19 1 0 +19 0.86746 -17.8678 20 1.00683 4.76371 21 0.968342 -43.9496 22 0.892882 -32.0742