From 9c2f52009a16e41fa804aa599e45e5085966e9d4 Mon Sep 17 00:00:00 2001 From: "Ryan@Home" Date: Tue, 9 Jul 2024 17:13:28 -0400 Subject: [PATCH] MonAnalyzer: finished array. need to do RDT --- .gitignore | 1 + Armory/ClassCorrParas.h | 22 +++--- Armory/ClassDetGeo.h | 7 +- working/ClassMonPlotter.h | 145 +++++++++++++++++++++++++++++++++----- working/MonAnalyzer.C | 129 ++++++++++++++++++++++----------- 5 files changed, 233 insertions(+), 71 deletions(-) diff --git a/.gitignore b/.gitignore index c2ac3b1..22ae63e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ root_data *.out *.txt *.csv +*.dat Cleopatra/ExtractXSec Cleopatra/ExtractXSecFromText diff --git a/Armory/ClassCorrParas.h b/Armory/ClassCorrParas.h index fdfa2fe..960862e 100644 --- a/Armory/ClassCorrParas.h +++ b/Armory/ClassCorrParas.h @@ -26,31 +26,31 @@ public: LoadRDTCorr(); } - void CheckCorrParasSize(int arraySize, int rdtSize){ + void CheckCorrParasSize(size_t arraySize, size_t rdtSize){ printf("------------ Check Correction parameter sizes\n"); if( is_xn_OK && xnCorr.size() < arraySize ) { - printf(" xnCorr [%zu] < array size %d. Set xnCorr[1..99] = 1.0 \n", xnCorr.size(), arraySize); + printf(" xnCorr [%zu] < array size %zu. Set xnCorr[1..99] = 1.0 \n", xnCorr.size(), arraySize); for( int i = 0; i < defaultSize; i++ ) xnCorr.push_back(1.0); is_xn_OK = false; } if( is_xfxne_OK && xfxneCorr.size() < arraySize ) { - printf(" xfxneCorr [%zu] < array size %d. Set xfxneCorr[1..99] = (0.0, 1.0) \n", xfxneCorr.size(), arraySize); + printf(" xfxneCorr [%zu] < array size %zu. Set xfxneCorr[1..99] = (0.0, 1.0) \n", xfxneCorr.size(), arraySize); for( int i = 0; i < defaultSize; i++ ) xfxneCorr.push_back({0.0, 1.0}); is_xScale_OK = false; } if( is_e_OK && eCorr.size() < arraySize ) { - printf(" eCorr [%zu] < array size %d. Set eCorr[1..99] = (1.0, 0.0) \n", xnCorr.size(), arraySize); + printf(" eCorr [%zu] < array size %zu. Set eCorr[1..99] = (1.0, 0.0) \n", xnCorr.size(), arraySize); for( int i = 0; i < defaultSize; i++ ) eCorr.push_back({1.0, 0.0}); is_e_OK = false; } if( is_xScale_OK && xScale.size() < arraySize ) { - printf(" xScale [%zu] < array size %d. Set xScale[1..99] = 1.0 \n", xScale.size(), arraySize); + printf(" xScale [%zu] < array size %zu. Set xScale[1..99] = 1.0 \n", xScale.size(), arraySize); for( int i = 0; i < defaultSize; i++ ) xScale.push_back(1.0); is_xScale_OK = false; } if( is_rdt_OK && rdtCorr.size() < rdtSize ) { - printf(" rdtCorr [%zu] < array size %d. Set rdtScale[1..99] = (0.0, 1.0) \n", rdtCorr.size(), arraySize); + printf(" rdtCorr [%zu] < array size %zu. Set rdtScale[1..99] = (0.0, 1.0) \n", rdtCorr.size(), arraySize); for( int i = 0; i < defaultSize; i++ ) rdtCorr.push_back({0.0, 1.0}); is_rdt_OK = false; } @@ -79,7 +79,7 @@ public: if( file.is_open() ){ float a; while( file >> a ) xnCorr.push_back(a); - printf(".......... done.\n"); + printf(".......... done. size:%zu\n", xnCorr.size()); is_xn_OK = true; }else{ for( int i = 0; i < defaultSize; i++ ) xnCorr.push_back(1.0); @@ -99,7 +99,7 @@ public: if( file.is_open() ){ float a; while( file >> a ) xScale.push_back(a); - printf("........ done.\n"); + printf("........ done. size:%zu\n", xScale.size()); is_xScale_OK = true; }else{ for( int i = 0; i < defaultSize; i++ ) xScale.push_back(1.0); @@ -119,7 +119,7 @@ public: if( file.is_open() ){ float a, b; while( file >> a >> b) xfxneCorr.push_back({a, b}); - printf("........ done.\n"); + printf("........ done. size:%zu\n", xfxneCorr.size()); is_xfxne_OK = true; }else{ for( int i = 0; i < defaultSize; i++ ) xfxneCorr.push_back({0.0, 1.0}); @@ -139,7 +139,7 @@ public: if( file.is_open() ){ float a, b; while( file >> a >> b) eCorr.push_back( {a, b} ); // 1/a1, a0 , e' = e * a1 + a0 - printf(".............. done.\n"); + printf(".............. done. size:%zu\n", eCorr.size()); is_e_OK = true; }else{ for( int i = 0; i < defaultSize; i++ ) eCorr.push_back( {1.0, 0.0} ); @@ -159,7 +159,7 @@ public: if( file.is_open() ){ float a, b; while( file >> a >> b) rdtCorr.push_back({a, b}); - printf("............ done.\n"); + printf("............ done. size:%zu\n", rdtCorr.size()); is_rdt_OK = true; }else{ for( int i = 0; i < defaultSize; i++ ) rdtCorr.push_back( {0.0, 1.0} ); diff --git a/Armory/ClassDetGeo.h b/Armory/ClassDetGeo.h index beb0f9c..01ecb23 100644 --- a/Armory/ClassDetGeo.h +++ b/Armory/ClassDetGeo.h @@ -124,7 +124,7 @@ public: std::vector array; std::vector aux; - void Print( bool printArray = false) ; + void Print( int printArray = 0) ; // 0 = no print, -1 = print all, 1 = print only enabled short GetArrayID(int id){ int detCount = 0; @@ -244,7 +244,7 @@ inline bool DetGeo::LoadDetectorGeo(TMacro * macro, bool verbose){ } -inline void DetGeo::Print(bool printArray){ +inline void DetGeo::Print(int printArray){ printf("#####################################################\n"); printf(" B-field : %8.2f T, %s\n", Bfield, Bfield > 0 ? "out of plan" : "into plan"); @@ -253,8 +253,9 @@ inline void DetGeo::Print(bool printArray){ printf(" z-Min : %8.2f mm\n", zMin); printf(" z-Max : %8.2f mm\n", zMax); - if( printArray ) { + if( printArray != 0 ) { for( size_t i = 0; i < array.size() ; i++){ + if( printArray > 0 && !array[i].enable ) continue; printf("================================= %zu-th Detector Info (%s)\n", i, array[i].enable ? "enabled" : "disabled"); array[i].Print(); aux[i].Print(); diff --git a/working/ClassMonPlotter.h b/working/ClassMonPlotter.h index 8565a4a..9750cd1 100644 --- a/working/ClassMonPlotter.h +++ b/working/ClassMonPlotter.h @@ -9,6 +9,8 @@ #include "TH1.h" #include "TH2.h" #include "TCanvas.h" +#include "TLine.h" +#include "TStyle.h" /****************************************************************** * This is Plotter for Monitor.C. It contains @@ -57,7 +59,10 @@ public: void Plot(); - void PlotRawID(); + void PlotRaw(bool isLog = false); + void PlotCal(); + void PlotEZ(); + // void PlotEx(); TCanvas * canvas; @@ -65,7 +70,7 @@ public: //======== raw data TH2F * he_ID, * hxf_ID, * hxn_ID; // vs ID - TH1I * hArrayMulti; + TH1I * hArrayMulti; TH1F ** he, ** hxf, ** hxn; //basic data TH2F ** hxf_xn, ** he_xs; // correlation @@ -75,6 +80,7 @@ public: TH2F ** hxfCal_xnCal; TH2F ** he_xsCal; // raw e vs xf TH2F ** he_x; // raw e vs x + TH2F * heCal_ID; //===== eCal V z TH2F * heCal_z; @@ -107,6 +113,7 @@ private: float recoilOutter; double zRange[2] ; // zMin, zMax + TString canvasTitle; TString suffix; int numPad; @@ -145,11 +152,13 @@ MonPlotter::~MonPlotter(){ delete hxn_ID; delete hArrayMulti; + delete heCal_ID; + delete heCal_zGC; delete heCal_z; + delete hEx_ThetaCM; delete hExCut1; delete hExCut2; - delete heCal_zGC; delete hrdt_ID; @@ -191,9 +200,10 @@ MonPlotter::~MonPlotter(){ void MonPlotter::SetUpCanvas(TString title, int padSize, int divX, int divY){ - canvas = new TCanvas("canavs" + suffix, title, 200 * aID, 200 * aID, divX * padSize, divY * padSize); + canvas = new TCanvas("canavs" + suffix, title, 500 * aID, 0, divX * padSize, divY * padSize); canvas->Divide(divX, divY); numPad = divX * divY; + canvasTitle = title; } @@ -239,16 +249,16 @@ void MonPlotter::SetUpHistograms(int * rawEnergyRange, int * energyRange, double CreateListOfHist2D(hxf_xn, numDet, "hxf_xn", "Raw xf vs. xn (ch=%d);xf (channel);xn (channel)" , 500, rawEnergyRange[0], rawEnergyRange[1], 500, rawEnergyRange[0], rawEnergyRange[1]); CreateListOfHist2D(he_xs, numDet, "he_xs", "Raw e vs xf+xn (ch=%d); xf+xn (channel); e (channel)", 500, rawEnergyRange[0], rawEnergyRange[1], 500, rawEnergyRange[0], rawEnergyRange[1]); - CreateListOfHist1D(heCal, numDet, "heCal", "Corrected e (ch=%d); e (MeV); count", 2000, energyRange[0], energyRange[1]); - + CreateListOfHist2D(he_x , numDet, "he_x", "Raw e vs x (ch=%d); x (mm); Raw e (channel)", 500, rawEnergyRange[0], rawEnergyRange[1], 500, -1, detLength +1); CreateListOfHist2D(hxfCal_xnCal, numDet, "hxfCal_xnCal", "Corrected XF vs. XN (ch=%d);XF (channel);XN (channel)", 500, 0, rawEnergyRange[1], 500, 0, rawEnergyRange[1]); CreateListOfHist2D(he_xsCal , numDet, "he_xsCal", "Raw e vs Corrected xf+xn (ch=%d); corrected xf+xn (channel); Raw e (channel)", 500, rawEnergyRange[0], rawEnergyRange[1], 500, rawEnergyRange[0], rawEnergyRange[1]); - CreateListOfHist2D(he_x , numDet, "he_x", "Raw e vs x (ch=%d); x (mm); Raw e (channel)", 500, rawEnergyRange[0], rawEnergyRange[1], 500, -1, detLength +1); - + CreateListOfHist1D(heCal, numDet, "heCal", "Corrected e (ch=%d); e (MeV); count", 2000, energyRange[0], energyRange[1]); + //====================== E-Z plot - heCal_z = new TH2F("heCal_z" + suffix , "E vs. Z;Z (mm);E (MeV)" , 400, zRange[0], zRange[1], 400, energyRange[0], energyRange[1]); - heCal_zGC = new TH2F("heCal_zGC" + suffix ,"E vs. Z gated;Z (mm);E (MeV)", 400, zRange[0], zRange[1], 400, energyRange[0], energyRange[1]); + heCal_ID = new TH2F("heCal_ID" + suffix , "E vs. ID; ID;E (MeV)" , numDet, 0, numDet, 400, energyRange[0], energyRange[1]); + heCal_z = new TH2F("heCal_z" + suffix , "E vs. Z;Z (mm);E (MeV)" , 400, zRange[0], zRange[1], 400, energyRange[0], energyRange[1]); + heCal_zGC = new TH2F("heCal_zGC" + suffix ,"E vs. Z gated;Z (mm);E (MeV)", 400, zRange[0], zRange[1], 400, energyRange[0], energyRange[1]); //===================== Recoil int rdtRange[2]; @@ -311,14 +321,115 @@ void MonPlotter::Plot(){ } } -void MonPlotter::PlotRawID(){ - TCanvas * haha = new TCanvas("haha" + suffix, "Raw ID", 1200, 600); - haha->Divide(2,2); +void MonPlotter::PlotRaw(bool isLog){ + + TCanvas * cRawID = new TCanvas("cRawID", Form("Raw e, Ring, xf, xn vs ID | %s", canvasTitle.Data()), 100 + 500 * aID, 100, 1200, 800); + cRawID->Clear(); cRawID->Divide(2,2); + cRawID->cd(1); he_ID->Draw("colz"); + cRawID->cd(2); hArrayMulti->Draw(); + cRawID->cd(3); hxf_ID->Draw("colz"); + cRawID->cd(4); hxn_ID->Draw("colz"); + + int padSize = 200; + int canvasSize[2] = {padSize * colDet, padSize * rowDet}; + + TCanvas * cRawE = new TCanvas("cRawE" + suffix,Form("E raw | %s", canvasTitle.Data()), 200 + 500 * aID, 200, canvasSize[0], canvasSize[1]); + cRawE->Clear(); cRawE->Divide(colDet,rowDet); + for (Int_t i=0; i < numDet; i++) { + cRawE->cd(i+1); + cRawE->cd(i+1)->SetGrid(); + if( isLog ) cRawE->cd(i+1)->SetLogy(); + he[i]->Draw(""); + } + + TCanvas *cRawXf = new TCanvas("cRawXf" + suffix,Form("Xf raw | %s", canvasTitle.Data()), 300 + 500 * aID, 300, canvasSize[0], canvasSize[1]); + cRawXf->Clear(); cRawXf->Divide(colDet,rowDet); + for (Int_t i=0; icd(i+1); + cRawXf->cd(i+1)->SetGrid(); + if( isLog ) cRawXf->cd(i+1)->SetLogy(); + hxf[i]->Draw(""); + } + + TCanvas *cRawXn = new TCanvas("cRawXn" + suffix,Form("Xn raw | %s", canvasTitle.Data()), 400 + 500 * aID, 400, canvasSize[0], canvasSize[1]); + cRawXn->Clear();cRawXn->Divide(colDet,rowDet); + for (Int_t i=0; icd(i+1); + cRawXn->cd(i+1)->SetGrid(); + if( isLog ) cRawXn->cd(i+1)->SetLogy(); + hxn[i]->Draw(""); + } + + TCanvas *cxfxn = new TCanvas("cxfxn" + suffix,Form("XF vs. XN | %s", canvasTitle.Data()), 500 + 500 * aID, 500, canvasSize[0], canvasSize[1]); + cxfxn->Clear(); cxfxn->Divide(colDet,rowDet); + for (Int_t i=0;icd(i+1); + cxfxn->cd(i+1)->SetGrid(); + hxf_xn[i]->Draw("col"); + } + + TCanvas *cxfxne = new TCanvas("cxfxne" + suffix,Form("E - XF+XN | %s", canvasTitle.Data()), 600 + 500 * aID, 600, canvasSize[0], canvasSize[1]); + cxfxne->Clear(); cxfxne->Divide(colDet,rowDet); + TLine line(0,0, 4000, 4000); line.SetLineColor(2); + for (Int_t i=0;icd(i+1); + cxfxne->cd(i+1)->SetGrid(); + he_xs[i]->Draw("col"); + line.Draw("same"); + } + +} + +void MonPlotter::PlotCal(){ + + int padSize = 200; + int canvasSize[2] = {padSize * colDet, padSize * rowDet}; + + TCanvas *ceVx = new TCanvas("ceVx" + suffix, Form("E vs. X = (xf-xn)/e | %s", canvasTitle.Data()), 100 + 500 * aID, 100, canvasSize[0], canvasSize[1]); + ceVx->Clear(); ceVx->Divide(colDet,rowDet); + for (Int_t i=0;icd(i+1); he_x[i]->Draw("col"); + } + + TCanvas *cxfxneC = new TCanvas("cxfxneC" + suffix,Form("Raw E - Corrected XF+XN | %s", canvasTitle.Data()), 200 + 500 * aID, 200, canvasSize[0], canvasSize[1]); + cxfxneC->Clear(); cxfxneC->Divide(colDet,rowDet); + TLine line(0,0, 4000, 4000); line.SetLineColor(2); + for (Int_t i=0;icd(i+1); + cxfxneC->cd(i+1)->SetGrid(); + he_xsCal[i]->Draw("col"); + line.Draw("same"); + } + + TCanvas *cEC = new TCanvas("cEC" + suffix,Form("E corrected | %s", canvasTitle.Data()), 300 + 500 * aID, 300, canvasSize[0], canvasSize[1]); + cEC->Clear();cEC->Divide(colDet,rowDet); + for (Int_t i=0; icd(i+1); + cEC->cd(i+1)->SetGrid(); + heCal[i]->Draw(""); + } + + TCanvas *cEC2 = new TCanvas("cEC2" + suffix,Form("E corrected | %s", canvasTitle.Data()), 400 + 500 * aID, 400, canvasSize[0], canvasSize[1]); + cEC2->Clear(); + heCal_ID->Draw("colz"); + + TCanvas *cxfxnC = new TCanvas("cxfxnC" + suffix,Form("XF vs XN corrected | %s", canvasTitle.Data()), 500 + 500 * aID, 500, canvasSize[0], canvasSize[1]); + cxfxnC->Clear(); cxfxnC->Divide(colDet,rowDet); + for (Int_t i=0;icd(i+1); + cxfxnC->cd(i+1)->SetGrid(); + hxfCal_xnCal[i]->Draw("col"); + } + +} + +void MonPlotter::PlotEZ(){ + TCanvas *cecalVz = new TCanvas("cevalVz",Form("ECALVZ : %s", canvasTitle.Data()),1000, 650); + cecalVz->Clear(); cecalVz->Divide(2,1); + gStyle->SetOptStat("neiou"); + cecalVz->cd(1);heCal_z->Draw("col"); + cecalVz->cd(2);heCal_zGC->Draw("col"); - haha->cd(1); he_ID->Draw("colz"); - haha->cd(2); hArrayMulti->Draw(); - haha->cd(3); hxf_ID->Draw("colz"); - haha->cd(4); hxn_ID->Draw("colz"); } #endif \ No newline at end of file diff --git a/working/MonAnalyzer.C b/working/MonAnalyzer.C index b470847..a475467 100644 --- a/working/MonAnalyzer.C +++ b/working/MonAnalyzer.C @@ -24,7 +24,7 @@ #include "vector" //^############################################ User setting -int rawEnergyRange[2] = { 100, 60000}; /// share with e, xf, xn +int rawEnergyRange[2] = { 0, 3000}; /// share with e, xf, xn int energyRange[2] = { 0, 10}; /// in the E-Z plot int rdtDERange[2] = { 0, 80}; int rdtERange[2] = { 0, 80}; @@ -36,11 +36,11 @@ double exRange[3] = { 100, -2, 10}; /// bin [keV], low[MeV], high[M //---Gate bool isTimeGateOn = true; int timeGate[2] = {-20, 12}; /// min, max, 1 ch = 10 ns -double eCalCut[2] = {0.5, 50}; /// lower & higher limit for eCal +double eCalCut[2] = {0.5, 20}; /// lower & higher limit for eCal double xGate = 0.9; ///cut out the edge double thetaCMGate = 10; /// deg -std::vector skipDetID = {11, 16, 23} ;//{2, 11, 17} +std::vector skipDetID = {11} ; TString rdtCutFile1 = ""; TString rdtCutFile2 = ""; @@ -58,7 +58,8 @@ void MonAnalyzer(){ printf("#####################################################################\n"); TChain *chain = new TChain("gen_tree"); - chain->Add("../root_data/gen_run043.root"); + //chain->Add("../root_data/gen_run043.root"); + chain->Add("../root_data/trace_run029.root"); TObjArray * fileList = chain->GetListOfFiles(); printf("\033[0;31m========================================== Number of Files : %2d\n",fileList->GetEntries()); @@ -85,30 +86,36 @@ void MonAnalyzer(){ //*========================================== ULong64_t NumEntries = chain->GetEntries(); - CorrParas * corr = new CorrParas; - corr->LoadAllCorrections(); - corr->CheckCorrParasSize(mapping::NARRAY, mapping::NRDT); DetGeo * detGeo = new DetGeo("detectorGeo.txt"); // TransferReaction * transfer = new TransferReaction("reactionConfig.txt"); - numGeo = detGeo->numGeo; printf("================== num. of Arrays : %d\n", numGeo); + int numTotArray = 0; + detGeo->Print(1); + for( size_t i = 0; i < detGeo->array.size(); i++ ){ + if( detGeo->array[i].enable ) numTotArray += detGeo->array[i].numDet; + } + + CorrParas * corr = new CorrParas; + corr->LoadAllCorrections(); + corr->CheckCorrParasSize(numTotArray, mapping::NRDT); + plotter = new MonPlotter *[numGeo]; for( int i = 0; i < numGeo; i++ ) { plotter[i] = new MonPlotter(i, detGeo, mapping::NRDT); - plotter[i]->SetUpCanvas("haha", 500, 3, 2); + plotter[i]->SetUpCanvas("haha", 500, 3, 2); //TODO canvaseTitle plotter[i]->SetUpHistograms(rawEnergyRange, energyRange, exRange, thetaCMRange, rdtDERange, rdtERange); } //TODO make the data class. - double eCal[mapping::NARRAY]; - double xfCal[mapping::NARRAY]; - double xnCal[mapping::NARRAY]; - double x[mapping::NARRAY]; - double xCal[mapping::NARRAY]; - double z[mapping::NARRAY]; + std::vectoreCal (numTotArray); + std::vectorxfCal (numTotArray); + std::vectorxnCal (numTotArray); + std::vectorx (numTotArray); + std::vectorxCal (numTotArray); + std::vectorz (numTotArray); //^########################################################### //^ * Process @@ -120,30 +127,24 @@ void MonAnalyzer(){ while (reader.Next()) { - // printf("%llu | %llu | %lu\n", processedEntries, *evID, e.GetSize()); - //*============================================= Array; int arrayMulti[numGeo] ; //array multiplicity, when any is calculated. - int zMulti[numGeo] ; //array multiplicity, when z is calculated. - for( int i = 0; i < numGeo; i++ ) { - arrayMulti[i] = 0; - zMulti[i] = 0; - } + for( int i = 0; i < numGeo; i++ ) arrayMulti[i] = 0; - for( int id = 0; id < e.GetSize() ; id++ ){ + for( int id = 0; id < (int) e.GetSize() ; id++ ){ short aID = detGeo->GetArrayID(id); if( aID < 0 ) continue; //@================== Filling raw data + plotter[aID]->he_ID->Fill(id, e[id]); + plotter[aID]->hxf_ID->Fill(id, xf[id]); + plotter[aID]->hxn_ID->Fill(id, xn[id]); + plotter[aID]->he[id]->Fill(e[id]); plotter[aID]->hxf[id]->Fill(xf[id]); plotter[aID]->hxn[id]->Fill(xn[id]); plotter[aID]->hxf_xn[id]->Fill(xf[id],xn[id]); - plotter[aID]->he_xs[id]->Fill(xf[id]+xn[id], e[id]); - - plotter[aID]->he_ID->Fill(id, e[id]); - plotter[aID]->hxf_ID->Fill(id, xf[id]); - plotter[aID]->hxn_ID->Fill(id, xn[id]); + plotter[aID]->he_xs[id]->Fill(xf[id]+xn[id], e[id]); //@==================== Basic gate if( TMath::IsNaN(e[id]) ) continue ; @@ -185,8 +186,13 @@ void MonAnalyzer(){ if ( !TMath::IsNaN(xf[id]) && TMath::IsNaN(xn[id]) ) xCal[id] = xfCal[id]/ e[id]; if ( TMath::IsNaN(xf[id]) && !TMath::IsNaN(xn[id]) ) xCal[id] = 1.0 - xnCal[id]/ e[id]; + //@=================== Fill in histogram + plotter[aID]->he_x[id]->Fill(x[id],e[id]); + plotter[aID]->hxfCal_xnCal[id]->Fill(xfCal[id],xnCal[id]); + plotter[aID]->he_xsCal[id]->Fill(e[id],xnCal[id] + xfCal[id]); + //@======= Scale xcal from (0,1) - if( corr->xScale.size() >= id ) xCal[id] = (xCal[id]-0.5)/corr->xScale[id] + 0.5; /// if include this scale, need to also inclused in Cali_littleTree + if( corr->xScale.size() ) xCal[id] = (xCal[id]-0.5)/corr->xScale[id] + 0.5; /// if include this scale, need to also inclused in Cali_littleTree if( abs(xCal[id] - 0.5) > xGate/2. ) continue; @@ -200,11 +206,9 @@ void MonAnalyzer(){ } } - //@===================== When z is calcualted. - zMulti[aID] ++; - - //@=================== Array fill - plotter[aID]->he_x[id]->Fill(x[id],e[id]); + //@=================== Fill histogram + plotter[aID]->heCal[id]->Fill(eCal[id]); + plotter[aID]->heCal_ID->Fill(id, eCal[id]); plotter[aID]->heCal_z->Fill(z[id],eCal[id]); //@=================== Recoil Gate @@ -343,25 +347,70 @@ void MonAnalyzer(){ if( processedEntries > 1000 ) break; }//^############################################## End of Process + gStyle->SetOptStat("neiou"); + gStyle->GetAttDate()->SetTextSize(0.02); + gStyle->SetOptDate(1); + gStyle->SetDateX(0); + gStyle->SetDateY(0); + + + for( int i = 0; i < detGeo->numGeo ; i++){ plotter[i]->Plot(); } //^############################################### - + printf("------------------- List of Plots -------------------\n"); + // printf(" newCanvas() - Create a new Canvas\n"); + // printf("-----------------------------------------------------\n"); + printf(" raw() - Raw data\n"); + printf(" cal() - Calibrated data\n"); + printf("-----------------------------------------------------\n"); + printf(" ez() - Energy vs. Z\n"); + // printf(" recoils() - Raw DE vs. E Recoil spectra\n"); + //printf(" elum() - Luminosity Energy Spectra\n"); + //printf(" ic() - Ionization Chamber Spectra\n"); + // printf("-----------------------------------------------------\n"); + // printf(" eCalVzRow() - Energy vs. Z for each row\n"); + // printf(" excite() - Excitation Energy\n"); + // printf(" ExThetaCM() - Ex vs ThetaCM\n"); + // printf(" ExVxCal() - Ex vs X for all %d detectors\n", numDet); + // printf("-----------------------------------------------------\n"); + // printf(" ShowFitMethod() - Shows various fitting methods \n"); + // printf(" RDTCutCreator() - Create RDT Cuts [May need to edit]\n"); + // printf(" Check_rdtGate() - Check RDT Cuts. \n"); + // printf(" readTrace() - read trace from gen_runXXX.root \n"); + // printf(" readRawTrace() - read trace from runXXX.root \n"); + // printf(" Check1D() - Count Integral within a range\n"); + // printf("-----------------------------------------------------\n"); + // printf(" %s\n", canvasTitle.Data()); + printf("-----------------------------------------------------\n"); } //%============================================= -void rawID(int arrayID = -1){ - +void raw(bool isLog = false, int arrayID = -1){ if( arrayID < 0 ){ - for( int i = 0; i < numGeo; i++ ) plotter[i]->PlotRawID(); + for( int i = 0; i < numGeo; i++ ) plotter[i]->PlotRaw(isLog); }else{ - if( arrayID < numGeo) plotter[arrayID]->PlotRawID(); + if( arrayID < numGeo) plotter[arrayID]->PlotRaw(isLog); } - } +void cal(int arrayID = -1){ + if( arrayID < 0 ){ + for( int i = 0; i < numGeo; i++ ) plotter[i]->PlotCal(); + }else{ + if( arrayID < numGeo) plotter[arrayID]->PlotCal(); + } +} + +void ez(int arrayID = -1){ + if( arrayID < 0 ){ + for( int i = 0; i < numGeo; i++ ) plotter[i]->PlotEZ(); + }else{ + if( arrayID < numGeo) plotter[arrayID]->PlotEZ(); + } +}