diff --git a/Inputs/DetectorConfiguration/lassaSingle.detector b/Inputs/DetectorConfiguration/lassaSingle.detector new file mode 100644 index 0000000000000000000000000000000000000000..9db148ee21b7af92a1286651078e35a2e80f038e --- /dev/null +++ b/Inputs/DetectorConfiguration/lassaSingle.detector @@ -0,0 +1,27 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Thickness in micrometer +% Radius in mm +% Temperature in K, Pressure in bar +Target + THICKNESS= 6.26 +ANGLE= 0 + RADIUS= 10 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 + +%%%%%%%%%%%%%%%%%%%%% +LASSAArray +%%%%%%%%%%%%%%%%%%%%% + +%%%%%%% Telescope 0 %%%%%%% +LassaTelescope +A= -3.5 -3.5 215 +B= 3.5 -3.5 215 +C= -3.5 3.5 215 +D= 3.5 3.5 215 + diff --git a/Inputs/EventGenerator/proton.source b/Inputs/EventGenerator/proton.source index 7c67ffc132bc4ae1cb8d7d87b94efa8d75572cdb..052193a50c07ae4d271518d0501bbf0cd1928ead 100644 --- a/Inputs/EventGenerator/proton.source +++ b/Inputs/EventGenerator/proton.source @@ -4,10 +4,10 @@ % Energy are given in MeV , Position in mm % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Isotropic - EnergyLow= 190 + EnergyLow= 0 EnergyHigh= 190 HalfOpenAngleMin= 0 - HalfOpenAngleMax= 0 + HalfOpenAngleMax= 100 x0= 0 y0= 0 z0= 0 diff --git a/NPAnalysis/Hira2/Analysis.cxx b/NPAnalysis/Hira2/Analysis.cxx index 962b1069efad0cb75f157738abc2b573d5a5c6fc..d4f51a8bc06317584fd924000ba09d6cc340164c 100644 --- a/NPAnalysis/Hira2/Analysis.cxx +++ b/NPAnalysis/Hira2/Analysis.cxx @@ -79,6 +79,7 @@ void Analysis::TreatEvent(){ //double BeamEnergy = Rand.Gaus(Initial->GetIncidentInitialKineticEnergy(),4.5); double BeamEnergy = InitialConditions->GetIncidentInitialKineticEnergy(); + double Thickness; //cout << Thickness << endl; @@ -127,7 +128,8 @@ void Analysis::TreatEvent(){ if(Hira->CsI_E.size() == 1){ for(int countCsI =0; countCsI<Hira->CsI_E.size(); countCsI++){ //Try to simulate the nuclear reaction loss - double Thickness = Proton_CsI.EvaluateMaterialThickness(0*MeV, Hira->CsI_E[countCsI]*MeV, 200*millimeter, 0.1*millimeter); + Thickness = Proton_CsI.EvaluateMaterialThickness(0*MeV, Hira->CsI_E[countCsI]*MeV, 200*millimeter, 0.1*millimeter); + cout << Thickness << endl; double eval = f_proton->Eval(Thickness/10); double Random_value = Rand.Uniform(0,1); @@ -175,8 +177,8 @@ void Analysis::InitOutputBranch() { RootOutput::getInstance()->GetTree()->Branch( "Y" , &Y , "Y/D" ) ; RootOutput::getInstance()->GetTree()->Branch( "Z" , &Z , "Z/D" ) ; RootOutput::getInstance()->GetTree()->Branch( "TelescopeNumber" , &TelescopeNumber , "TelescopeNumber/D" ) ; - RootOutput::getInstance()->GetTree()->Branch("InteractionCoordinates","TInteractionCoordinates",&InteractionCoordinates); - RootOutput::getInstance()->GetTree()->Branch("InitialConditions","TInitialConditions",&InitialConditions); + //RootOutput::getInstance()->GetTree()-> Branch("InteractionCoordinates","TInteractionCoordinates",&InteractionCoordinates); + //RootOutput::getInstance()->GetTree()->Branch("InitialConditions","TInitialConditions",&InitialConditions); } //////////////////////////////////////////////////////////////////////////////// diff --git a/NPAnalysis/Hira2/Analysis.h b/NPAnalysis/Hira2/Analysis.h index a47659cdb37c00d55e5289e3ea04eceb85009552..5506be1d77d512b0840669b65190b10df922460d 100644 --- a/NPAnalysis/Hira2/Analysis.h +++ b/NPAnalysis/Hira2/Analysis.h @@ -64,8 +64,6 @@ private: - - //NPL::Reaction* TransferReaction; // intermediate variable diff --git a/NPAnalysis/Hira2/RunToTreat.txt b/NPAnalysis/Hira2/RunToTreat.txt index 0aba6058e46db18e458237a427dbce1428ff818f..45e044023d1e5a1f61ac5d67477fb1ada01143bc 100755 --- a/NPAnalysis/Hira2/RunToTreat.txt +++ b/NPAnalysis/Hira2/RunToTreat.txt @@ -1,5 +1,5 @@ TTreeName SimulatedTree RootFileName -% ../../Outputs/Simulation/test.root - ../../Outputs/Simulation/proton_0_300.root + ../../Outputs/Simulation/test.root +% ../../Outputs/Simulation/proton_0_300.root diff --git a/NPAnalysis/Lassa/Analysis.cxx b/NPAnalysis/Lassa/Analysis.cxx new file mode 100644 index 0000000000000000000000000000000000000000..eda5b6648d904e2f205018cea48c19fb31d65458 --- /dev/null +++ b/NPAnalysis/Lassa/Analysis.cxx @@ -0,0 +1,708 @@ +/***************************************************************************** + * Copyright (C) 2009-2014 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + ConfigLassa + MAX_STRIP_MULTIPLICITY 1 + * * + * Creation Date : march 2025 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Class describing the property of an Analysis object * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "Analysis.h" +#include "NPAnalysisFactory.h" +#include "NPDetectorManager.h" +#include "NPOptionManager.h" +#include "RootOutput.h" +#include "RootInput.h" +#include "TROOT.h" +#include "TSystem.h" +#include "TFile.h" +#include "TString.h" +#include "TTree.h" +#include "TBranch.h" +#include "TMath.h" +#include "TInteractionCoordinates.h" +#include <algorithm> + +using namespace std; + +//////////////////////////////////////////////////////////////////////////////// +Analysis::Analysis(){ +} +//////////////////////////////////////////////////////////////////////////////// +Analysis::~Analysis(){ +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::Init(){ + Lassa= (TLassaPhysics*) m_DetectorManager->GetDetector("LASSAArray"); + + Initial = new TInitialConditions(); + InitOutputBranch(); + InitInputBranch(); + + totalEvents = 0; + detectedEvents = 0; + peakEvents = 0; + + maxEnergy = -1.; + minEnergy = 10000.; + + + for(int i = 0; i < 16; i++){ + for(int j = 0; j < 16; j++){ + detectedEvs[i][j] = 0; + peakEvs[i][j] = 0; + peakEffs[i][j] = -1.; + + if(i < 8 && j < 8){ + peakEffsAvg[i][j] = -1.; + } + } + } + + for(int i = 0; i < 5; i++){ + + fitFunction = ""; + Beta.str(""); + Mu.str(""); + + fitFunction = "1-exp(-1*"; + Beta << par[i][0]; + fitFunction += Beta.str(); + + fitFunction += "*(x-"; + Mu << par[i][1]; + fitFunction += Mu.str(); + fitFunction += "))"; + + ReactionLoss[i] = new TF1("Reaction Loss Fit Function",fitFunction.c_str(),0,100); + + } + + + + for(int i = 0; i < 5; i++){ + for(int j = 0; j < 2; j++){ + + EnergyRange[i][j].clear(); + + } + } + + + // Declare the histograms for the geometric + // and peak efficiency + + // Peak Efficiencies + + h_peakEff = new TH2F("Peak Efficiencies", "Peak Efficiencies",16,0,16,16,0,16); + h_peakEff->GetXaxis()->SetTitle("X-Strip"); + h_peakEff->GetYaxis()->SetTitle("Y-Strip"); + + h_peakEffAvg = new TH2F("Average Peak Efficiencies","Average Peak Efficiencies",8,0,8,8,0,8); + h_peakEffAvg->GetXaxis()->SetTitle("X-Strip"); + h_peakEffAvg->GetYaxis()->SetTitle("Y-Strip"); + + // Geometric Efficiencies + + hDetecTheta = new TH1F("hDetecTheta","DetecTheta",180,0,180); + hDetecTheta->GetXaxis()->SetTitle("#Theta (deg)"); + hDetecTheta->GetYaxis()->SetTitle("Counts"); + + hEmittTheta = new TH1F("hEmittTheta","EmittTheta",180,0,180); + hEmittTheta->GetXaxis()->SetTitle("#Theta (deg)"); + hEmittTheta->GetYaxis()->SetTitle("Counts"); + + hDetecThetaVsPhi = new TH2F("hDetecThetaVsPhi", "hDetecThetaVsPhi", 180,0,180,360,-180,180); + hDetecThetaVsPhi->GetXaxis()->SetTitle("#Theta (deg)"); + hDetecThetaVsPhi->GetYaxis()->SetTitle("#Phi (deg)"); + + hGeometricEfficiency = new TH1F("hEfficiency","Efficiency",180,0,180); + hGeometricEfficiency->GetXaxis()->SetTitle("#Theta (deg)"); + hGeometricEfficiency->GetYaxis()->SetTitle("#epsilon (%)"); + + // Initialize the Energy loss table for each species use. + + for(int i = 0; i < 5; i++){ + + EnergyLoss_Table = "_CsI.G4table"; + EnergyLoss_Table = speciesNameArray[i] + EnergyLoss_Table; + + EnergyLoss_CsI[i] = EnergyLoss(EnergyLoss_Table.c_str(),"G4Table",100); + } + + peakEffSum_meat = 0.; + peakEffSquaredSum_meat = 0.; + peakEffAvg_meat = 0.; + peakEffSquaredAvg_meat = 0.; + N_meat = 0.; + sigma_meat = 0.; + + peakEffSum_edge = 0.; + peakEffSquaredSum_edge = 0.; + peakEffAvg_edge = 0.; + peakEffSquaredAvg_edge = 0.; + N_edge = 0.; + sigma_edge = 0.; +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::TreatEvent(){ + // Reinitiate calculated variable + ReInitValue(); + + totalEvents++; + + totalEnergy = Initial->GetKineticEnergy(0); + speciesName = Initial->GetParticleName(0); + + for(int i = 0; i < 5; i++){ + if(speciesName == speciesNameArray[i]){ + species = i; + } + } + + if(maxEnergy < totalEnergy){ + maxEnergy = totalEnergy; + } + + if(minEnergy > totalEnergy){ + minEnergy = totalEnergy; + } + + if(minEnergy < .0001){ + minEnergy = 0.; + } + + EDelta = .05*totalEnergy; + + ThetaLab_Init = Initial->GetThetaLab_WorldFrame(0); + + hEmittTheta->Fill(ThetaLab_Init); + + ///////////////////////////LOOP on Lassa Hit////////////////////////////////// +// if(Lassa -> ThickSi_E.size() == 1){ + if(Lassa -> ThickSi_E.size() >= 1){ + + TelescopeNumber = Lassa->TelescopeNumber[0]; + XStrip = Lassa->ThickSi_StripNumberX[0]; + YStrip = Lassa->ThickSi_StripNumberY[0]; + + X = Lassa->GetPositionOfInteraction(0).X(); + Y = Lassa->GetPositionOfInteraction(0).Y(); + Z = Lassa->GetPositionOfInteraction(0).Z(); + + TVector3 PositionOnLassa = TVector3(X,Y,Z); + TVector3 ZUnit = TVector3(0,0,1); + + double X_target = Initial->GetIncidentPositionX(); + double Y_target = Initial->GetIncidentPositionY(); + double Z_target = Initial->GetIncidentPositionZ(); + + TVector3 PositionOnTarget = TVector3(X_target,Y_target,Z_target); + TVector3 HitDirection = PositionOnLassa-PositionOnTarget; + TVector3 HitDirectionUnit = HitDirection.Unit(); + + TVector3 BeamDirection = Initial->GetBeamDirection(); + double XBeam = BeamDirection.X(); + double YBeam = BeamDirection.Y(); + double ZBeam = BeamDirection.Z(); + + ThetaLab = BeamDirection.Angle(HitDirection); + ThetaLab = ThetaLab/deg; + + PhiLab = HitDirection.Phi()/deg; + + E_ThickSi = Lassa->ThickSi_E[0]; + + hDetecTheta->Fill(ThetaLab); + + hDetecThetaVsPhi->Fill(ThetaLab,PhiLab); + + if(Lassa->CsI_E.size()>=1){ + + detectedEvents++; + detectedEvs[XStrip][YStrip]++; + + E_CsI_Temp = Lassa->CsI_E[0]; + + if(E_CsI_Temp > E_nucThres[species]){ + + zeroth_thres = .01; + first_thres = .05; + x_0 = -1; + x_1 = -1; + x_neg1 = -1; + zeroth_upperbound = -1.; + first_lowerbound = -1.; + slope = 10000; + + + // We want to check to see if the energy is within 2% of any of the stored energy values + + for(int i = 0; i < EnergyRange[species][1].size(); i++){ + + zeroth_upperbound = (1+zeroth_thres)*EnergyRange[species][1][i]; + zeroth_lowerbound = (1-zeroth_thres)*EnergyRange[species][1][i]; + + first_upperbound = (1+first_thres)*EnergyRange[species][1][i]; + first_lowerbound = (1-first_thres)*EnergyRange[species][1][i]; + + if(zeroth_upperbound > E_CsI_Temp && E_CsI_Temp > zeroth_lowerbound) {x_0 = i;} + + if(first_upperbound > E_CsI_Temp && E_CsI_Temp > zeroth_upperbound){x_1 = i;} + + if(first_lowerbound < E_CsI_Temp && E_CsI_Temp < zeroth_lowerbound){x_neg1 = i;} + + if(x_0 != -1 && x_1 != -1 && x_neg1 != -1){break;} + + } + + // If there is no matching point, then a new (energy,range) point + // will be added to the vector. + + if(x_0 == -1){ + + Range = EnergyLoss_CsI[species].EvaluateMaterialThickness(.0000001*MeV,Lassa->CsI_E[0]*MeV,15*cm,10*micrometer); + Range_0 = Range; + Range_1 = Range; + // Add a new point at the end + EnergyRange[species][1].push_back(E_CsI_Temp); + + EnergyRange[species][2].push_back(Range); + } + + else{ + + if(x_1 == -1 || x_neg1 == -1){Range_1 = EnergyRange[species][2][x_0];} + + else{ + + if(E_CsI_Temp > EnergyRange[species][1][x_0]){ + slope = (EnergyRange[species][2][x_1]-EnergyRange[species][2][x_0])/(EnergyRange[species][1][x_1]-EnergyRange[species][1][x_0]); + } + + else { + slope = (EnergyRange[species][2][x_0]-EnergyRange[species][2][x_neg1])/(EnergyRange[species][1][x_0]-EnergyRange[species][1][x_neg1]); + } + + Range_0 = EnergyRange[species][2][x_0]; + + Range_1 = slope*(E_CsI_Temp-EnergyRange[species][1][x_0]) + Range_0; + } + + } + +// Range = EnergyLoss_CsI[species].EvaluateMaterialThickness(.0000001*MeV,Lassa->CsI_E[0]*MeV,15*cm,10*micrometer); + Range = Range_1; + + eval = ReactionLoss[species]->Eval(Range/10); + Random_value = Rand.Uniform(0,1); + + if(Random_value>eval)E_CsI = Lassa->CsI_E[0]; + else E_CsI = Rand.Uniform(0,Lassa->CsI_E[0]); + + } + + else {E_CsI = E_CsI_Temp;} + + //E_CsI = Lassa->CsI_E[0]; + + ELab = E_ThickSi + E_CsI; + + //Check if the energy of the event is within the peak of the beam energy + + if(ELab > (totalEnergy-EDelta) && ELab < (totalEnergy+EDelta) && ELab > 0.){ + peakEvents++; + peakEvs[XStrip][YStrip]++; + } + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::End(){ + + geomEff = 100*((double)detectedEvents)/((double)totalEvents); + + peakEff = 100*((double)peakEvents)/((double)detectedEvents); + + hist_Title = ""; + canvas_Title = ""; + + maxEnergy_String.str(""); + + maxEnergy_String << maxEnergy; + + minEnergy_String.str(""); + + minEnergy_String << minEnergy; + + cout << endl; + cout << "Max Energy: " << maxEnergy << endl; + cout << "Min Energy: " << minEnergy << endl; + + if(minEnergy == maxEnergy){ + + hist_Title += speciesNameArray[species]; + hist_Title += " "; + hist_Title += maxEnergy_String.str(); + hist_Title += " MeV"; + + canvas_Title += "_"; + canvas_Title += speciesNameArray[species]; + canvas_Title += maxEnergy_String.str(); + canvas_Title += "MeV"; + } + + else{ + + cout << endl; + cout << "Else!" << endl; + + hist_Title += speciesNameArray[species]; + hist_Title += " "; + hist_Title += minEnergy_String.str(); + hist_Title += "->"; + hist_Title += maxEnergy_String.str(); + hist_Title += " MeV"; + + canvas_Title += "_"; + canvas_Title += speciesNameArray[species]; + canvas_Title += minEnergy_String.str(); + canvas_Title += "to"; + canvas_Title += maxEnergy_String.str(); + canvas_Title += "MeV"; + } + + // Files + + simData_Title = "simData"; + simData_Title += canvas_Title; + simData_Title += ".csv"; + simData.open(simData_Title.c_str()); + + peakEffMatrix_Title = "peakEffMatrix"; + peakEffMatrix_Title += canvas_Title; + peakEffMatrix_Title += ".csv"; + peakEffMatrix.open(peakEffMatrix_Title.c_str()); + + peakEffAvgMatrix_Title = "peakEffAvgMatrix"; + peakEffAvgMatrix_Title += canvas_Title; + peakEffAvgMatrix_Title += ".csv"; + peakEffAvgMatrix.open(peakEffAvgMatrix_Title.c_str()); + + detectEvMatrix_Title = "detectEvMatrix"; + detectEvMatrix_Title += canvas_Title; + detectEvMatrix_Title += ".csv"; + detectEvMatrix.open(detectEvMatrix_Title.c_str()); + + // Fill the histograms and files + + for(int i = 0; i < 16; i++){ + for(int j = 0; j < 16; j++){ + + if(detectedEvs[i][j] != 0){ + peakEffs[i][j] = 100*((double)peakEvs[i][j])/((double)detectedEvs[i][j]); + h_peakEff->Fill(i,j,peakEffs[i][j]); + } + + else{ + peakEffs[i][j] = 0; + } + } + } + + for(int i = 0; i < 8; i++){ + for(int j = 0; j < 8; j++){ + peakEffsAvg[i][j] = .25*(peakEffs[i][j] + peakEffs[i+8][j] + peakEffs[i][j+8] + peakEffs[i+8][j+8]); + h_peakEffAvg->Fill(i,j,peakEffsAvg[i][j]); + } + } + + cout << endl; + cout << "Total Events: " << totalEvents << endl; + cout << "Detected Events: " << detectedEvents << endl; + cout << "PeakEvents: " << peakEvents << endl; + + cout << "Geometric Efficiency: " << geomEff << endl; + cout << "Peak Efficiency: " << peakEff << endl; + + cout << "Range List Length: " << EnergyRange[species][2].size() << endl; + + simData << "Species Name: " << speciesNameArray[species] << endl; + simData << "Maximum Energy: " << maxEnergy << endl; + simData << endl << endl; + + simData << "Total Events: " << totalEvents << endl; + simData << "Detected Events: " << detectedEvents << endl; + simData << "PeakEvents: " << peakEvents << endl; + + simData << "Geometric Efficiency: " << geomEff << endl; + simData << "Peak Efficiency: " << peakEff << endl; + + for(int i = 0; i < 16; i++){ + for(int j = 0; j < 16; j++){ + + if(j == 0) peakEffMatrix << peakEffs[i][j] << ","; + else{peakEffMatrix<< peakEffs[i][j] << ",";} + if(j == 15) peakEffMatrix << endl; + + if(j == 0) detectEvMatrix << detectedEvs[i][j] << ","; + else{detectEvMatrix << detectedEvs[i][j] << ",";} + if(j == 15) detectEvMatrix << endl; + + if(i < 8 && j < 8){ + + if(j == 0) peakEffAvgMatrix << peakEffsAvg[i][j] << ","; + else{peakEffAvgMatrix<< peakEffsAvg[i][j] << ",";} + if(j == 15) peakEffAvgMatrix << endl; + + } + } + } + + + // I want to calculate the mean and the standard deviation of + // the peak efficiency in two regions (the meat of the crystal + // and the edges). + + // We will be averaging over the four quadrants of one detector. + + for(int i = 0; i < 16; i++){ + for(int j = 0; j < 16; j++){ + + if(0 < i && i < 7 && 0 < j && j < 7 || 0 < i && i < 7 && 8 < j && j < 15 || 8 < i && i < 15 && 0 < j && j < 7 || 8 < i && i < 15 && 8 < j && j < 15){ + peakEffSum_meat += peakEffs[i][j]; + peakEffSquaredSum_meat += peakEffs[i][j]*peakEffs[i][j]; + N_meat++; + + cout << endl; + cout << "x: " << i << " " << "y: " << j << endl; + cout << "Meat!" << endl; + cout << "Peak Efficiency: " << peakEffs[i][j] << endl; + + } + + else{ + peakEffSum_edge += peakEffs[i][j]; + peakEffSquaredSum_edge += peakEffs[i][j]*peakEffs[i][j]; + N_edge++; + + cout << endl; + cout << "x: " << i << " " << "y: " << j << endl; + cout << "Edge!" << endl; + cout << "Peak Efficiency: " << peakEffs[i][j] << endl; + } + } + } + + + peakEffAvg_meat = peakEffSum_meat/N_meat; + peakEffAvg_edge = peakEffSum_edge/N_edge; + + peakEffSquaredAvg_meat = peakEffSquaredSum_meat/N_meat; + peakEffSquaredAvg_edge = peakEffSquaredSum_edge/N_edge; + + sigma_meat = sqrt(peakEffSquaredAvg_meat-peakEffAvg_meat*peakEffAvg_meat); + sigma_edge = sqrt(peakEffSquaredAvg_edge-peakEffAvg_edge*peakEffAvg_edge); + + cout << endl; + cout << "N_meat: " << N_meat << endl; + cout << "N_edge: " << N_edge << endl; + + cout << "Peak Eff Avg Meat: " << peakEffAvg_meat << endl; + cout << "Peak Eff Avg Edge: " << peakEffAvg_edge << endl; + + cout << "sigma_meat: " << sigma_meat << endl; + cout << "sigma_edge: " << sigma_edge << endl; + + // Close the files + + detectEvMatrix.close(); + peakEffMatrix.close(); + peakEffAvgMatrix.close(); + simData.close(); + + // Draw the histograms on canvases + + // Canvases + + // Peak Efficiencies + + canvas_peakEffMatrix = new TCanvas("Peak Eff Matrix","Peak Eff Matrix",1000,1000); + canvas_peakEffMatrix->cd(); + h_peakEff->Draw("colz"); + h_peakEff->SetStats(0); + h_peakEff->SetMaximum(100); + h_peakEff->SetMinimum(30); + peakEff_hTitle = "Peak Eff Matrix "; + peakEff_hTitle += hist_Title; + h_peakEff->SetTitle(peakEff_hTitle.c_str()); + peakEff_cTitle = "canvas_peakEffMatrix"; + peakEff_cTitle += canvas_Title; + peakEff_cTitle += ".jpg"; + canvas_peakEffMatrix->SaveAs(peakEff_cTitle.c_str()); + + canvas_peakEffAvgMatrix = new TCanvas("Peak Eff Average Matrix","Peak Eff Average",1000,1000); + canvas_peakEffAvgMatrix->cd(); + h_peakEffAvg->Draw("colz"); + h_peakEffAvg->SetStats(0); + h_peakEffAvg->SetMaximum(100); + h_peakEffAvg->SetMinimum(30); + peakEffAvg_hTitle = "Peak Eff Average Matrix"; + peakEffAvg_hTitle += hist_Title; + h_peakEff->SetTitle(peakEffAvg_hTitle.c_str()); + peakEffAvg_cTitle = "canvas_peakEffAvgMatrix"; + peakEffAvg_cTitle += canvas_Title; + peakEffAvg_cTitle += ".jpg"; + canvas_peakEffAvgMatrix->SaveAs(peakEffAvg_cTitle.c_str()); + + // Geometric Efficiency + + canvas_Emitt = new TCanvas("canvas_Emitt", "Distrib",900,900); + canvas_Emitt->cd(); + hEmittTheta->Draw(""); + hDetecTheta->SetLineColor(kGreen); + hDetecTheta->Draw("same"); + + canvas_Detec = new TCanvas("canvas_Detec", "Distrib",900,900); + canvas_Detec->cd(); + hDetecTheta->Draw(""); + + canvas_DetecThetaVsPhi = new TCanvas("canvas_DetecThetaVsPhi", "Distrib",900,900); + canvas_DetecThetaVsPhi->cd(); + hDetecThetaVsPhi->Draw("colz"); + + canvas_GeometricEfficiency = new TCanvas("canvas_GeometricEfficiency", "Distrib",900,900); + canvas_GeometricEfficiency->cd(); + hGeometricEfficiency->Divide(hDetecTheta, hEmittTheta, 100, 1); + hGeometricEfficiency->Draw(""); + + // Save canvases to jpg's + + emitt_hTitle = "Emitted Angle"; + emitt_hTitle += hist_Title; + hEmittTheta->SetTitle(emitt_hTitle.c_str()); + + detec_hTitle = "Detected Angle"; + detec_hTitle += hist_Title; + hDetecTheta->SetTitle(detec_hTitle.c_str()); + + detec_hTitle = "Detected Angle (Theta Vs Phi)"; + detec_hTitle += hist_Title; + hDetecThetaVsPhi->SetTitle(detec_hTitle.c_str()); + + geomEff_hTitle = "Detected Angle (Theta Vs Phi)"; + geomEff_hTitle += hist_Title; + hGeometricEfficiency->SetTitle(geomEff_hTitle.c_str()); + + emitt_cTitle = "canvas_Emitt"; + emitt_cTitle += canvas_Title; + emitt_cTitle += ".jpg"; + canvas_Emitt->SaveAs(emitt_cTitle.c_str()); + + detec_cTitle = "canvas_Detec"; + detec_cTitle += canvas_Title; + detec_cTitle += ".jpg"; + canvas_Detec->SaveAs(detec_cTitle.c_str()); + + detecThetaVsPhi_cTitle = "canvas_DetecThetaVsPhi"; + detecThetaVsPhi_cTitle += canvas_Title; + detecThetaVsPhi_cTitle += ".jpg"; + canvas_DetecThetaVsPhi->SaveAs(detecThetaVsPhi_cTitle.c_str()); + + geomEff_cTitle = "canvas_GeometricEfficiency"; + geomEff_cTitle += canvas_Title; + geomEff_cTitle += ".jpg"; + canvas_GeometricEfficiency->SaveAs(geomEff_cTitle.c_str()); + +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::InitOutputBranch() { + //RootOutput::getInstance()->GetTree()->Branch("Ex",&Ex,"Ex/D"); + RootOutput::getInstance()->GetTree()->Branch("ELab",&ELab,"ELab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D"); + RootOutput::getInstance()->GetTree()->Branch("PhiLab",&PhiLab,"PhiLab/D"); +// RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D"); +// RootOutput::getInstance()->GetTree()->Branch("totalEvents",&totalEvents,"totalEvents/I"); +// RootOutput::getInstance()->GetTree()->Branch("detectedEvents",&detectedEvents,"detectedEvents/I"); +// RootOutput::getInstance()->GetTree()->Branch("peakEvents",&peakEvents,"peakEvents/I"); +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::InitInputBranch(){ + RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); + RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true ); + RootInput:: getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Initial); +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::ReInitValue(){ + + E_ThickSi = -1.; + E_CsI = -1.; + ELab = -1.; + E_CsI_Temp = -1.; + ThetaLab = -1000; + PhiLab = -1000; + X = -1000; + Y = -1000; + Z = -1000; + TelescopeNumber = -1; + EDelta = -1.; + + + ThetaLab_Init = -1000; + + fitFunction = ""; + Mu.str(""); + Beta.str(""); + species = -1; + + Range = -1.; + Range_0 = -1.; + Range_1 = -1.; + devRange_0 = -1000.; + devRange_1 = -1000.; + eval = -1.; + Random_value = -1.; + +} + +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the DetectorFactory // +//////////////////////////////////////////////////////////////////////////////// +NPL::VAnalysis* Analysis::Construct(){ + return (NPL::VAnalysis*) new Analysis(); +} + +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern "C"{ +class proxy{ + public: + proxy(){ + NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); + } +}; + +proxy p; +} + diff --git a/NPAnalysis/Lassa/Analysis.h b/NPAnalysis/Lassa/Analysis.h new file mode 100644 index 0000000000000000000000000000000000000000..33c2590c6015a10ce2dbf502b112c41e0b445f23 --- /dev/null +++ b/NPAnalysis/Lassa/Analysis.h @@ -0,0 +1,212 @@ +#ifndef Analysis_h +#define Analysis_h +/***************************************************************************** + * Copyright (C) 2009-2014 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * + * * + * Creation Date : march 2025 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Class describing the property of an Analysis object * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include"NPVAnalysis.h" +#include"TLassaPhysics.h" +#include "TInitialConditions.h" +#include "NPEnergyLoss.h" +#include "NPReaction.h" +#include "TRandom3.h" +#include "TMath.h" +#include <sstream> +#include <string> +#include "TCanvas.h" +#include "TH1F.h" +#include "TH2F.h" +#include "TF1.h" +#include <iostream> +#include <fstream> +#include <vector> + + +class Analysis: public NPL::VAnalysis{ + public: + Analysis(); + ~Analysis(); + + public: + void Init(); + void TreatEvent(); + void End(); + void InitOutputBranch(); + void InitInputBranch(); + void ReInitValue(); + static NPL::VAnalysis* Construct(); + + private: + double ELab; + double E_ThickSi; + double E_CsI; + double EDelta; + double PhiLab; + double ThetaLab; + double ThetaLab_Init; + double X,Y,Z; + double TelescopeNumber; + double thresholdEnergy; + double totalEnergy; + double maxEnergy; + double minEnergy; + ostringstream maxEnergy_String; + ostringstream minEnergy_String; + double E_CsI_Temp; + double devRange_0; + double devRange_1; + double devRange_Sum_0; + double devRange_Sum_1; + double devRangeSquared_Sum_0; + double devRangeSquared_Sum_1; + double devRange_Avg_0; + double devRangeSquared_Avg_0; + double devRange_Avg_1; + double devRangeSquared_Avg_1; + double sigma_Range_0; + double sigma_Range_1; + double devRangeMax_0; + double devRangeMax_1; + + string hist_Title; + string canvas_Title; + + int XStrip; + int YStrip; + + TLassaPhysics* Lassa; + TInitialConditions* Initial; + string speciesName; + + // intermediate variable + TRandom3 Rand; + + // Geometric Efficiency + double geomEff; + TH1F* hEmittTheta; + TH1F* hDetecTheta; + TH2F* hDetecThetaVsPhi; + TH1F* hGeometricEfficiency; + TCanvas *canvas_Emitt; + TCanvas *canvas_Detec; + TCanvas *canvas_DetecThetaVsPhi; + TCanvas *canvas_GeometricEfficiency; + string emitt_Title; + string Detec_Title; + string DetecThetaVsPhi_Title; + string GeometricEfficiency_Title; + + // Peak Efficiencies + int totalEvents; + int detectedEvents; + int peakEvents; + double peakEff; + int detectedEvs[16][16]; + int peakEvs[16][16]; + double peakEffs[16][16]; + double peakEffsAvg[8][8]; + TH2F* h_peakEff; + TH2F* h_peakEffAvg; + TCanvas* canvas_peakEffMatrix; + TCanvas* canvas_peakEffAvgMatrix; + string peakEffs_Title; + string peakEffsAvg_Title; + + // Files + ofstream simData; + ofstream peakEffMatrix; + ofstream peakEffAvgMatrix; + ofstream detectEvMatrix; + string simData_Title; + string peakEffMatrix_Title; + string peakEffAvgMatrix_Title; + string detectEvMatrix_Title; + + + // Range calculation + double zeroth_upperbound; + double zeroth_lowerbound; + double first_upperbound; + double first_lowerbound; + double slope; + double zeroth_thres; + double first_thres; + double Energy_Temp; + double Range_0; + double Range_1; + int x_0; + int x_1; + int x_neg1; + + //Histogram and Canvas Titles + string peakEff_hTitle; + string peakEff_cTitle; + string peakEffAvg_hTitle; + string peakEffAvg_cTitle; + string emitt_hTitle; + string emitt_cTitle; + string detec_hTitle; + string detec_cTitle; + string detecThetaVsPhi_hTitle; + string detecThetaVsPhi_cTitle; + string geomEff_hTitle; + string geomEff_cTitle; + + // CsI Nuclear Reaction Correction Fit Function + double Range; + double maxRange; + double eval; + double Random_value; + TF1* ReactionLoss[5]; + NPL::EnergyLoss EnergyLoss_CsI[5]; + string EnergyLoss_Name; + string EnergyLoss_Table; + string fitFunction; + ostringstream Mu; + ostringstream Beta; + int species; + string speciesNameArray[5] = {"proton","deuteron","triton","He3","alpha"}; + double par[5][2] = {{0.0360046, 0.0921675}, + {0.0473272, 0.0433612}, + {0.0558374, 0.0327295}, + {0.0478917, 0.0475857}, + {0.0518713, 0.036529}}; + + vector <double> EnergyRange[5][2]; + double E_nucThres[5] = {13.617,7.022,5.106,11.064,8.936}; +// double E_nucThres[5] = {0.,0.,0.,0.,0.}; + + int N_meat; + int N_edge; + double peakEffSum_meat; + double peakEffSum_edge; + double peakEffAvg_meat; + double peakEffAvg_edge; + double peakEffSquaredSum_meat; + double peakEffSquaredSum_edge; + double peakEffSquaredAvg_meat; + double peakEffSquaredAvg_edge; + double sigma_meat; + double sigma_edge; + + + +}; +#endif diff --git a/NPAnalysis/Lassa/CMakeLists.txt b/NPAnalysis/Lassa/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..f1da3aaa28c6236b3015ad1de9b29cf62972181b --- /dev/null +++ b/NPAnalysis/Lassa/CMakeLists.txt @@ -0,0 +1,2 @@ +cmake_minimum_required (VERSION 2.8) +include("../NPAnalysis.cmake") diff --git a/NPAnalysis/Lassa/RunToTreat.txt b/NPAnalysis/Lassa/RunToTreat.txt new file mode 100755 index 0000000000000000000000000000000000000000..82908222e590c8760e20a5e47347834912b6c19c --- /dev/null +++ b/NPAnalysis/Lassa/RunToTreat.txt @@ -0,0 +1,5 @@ +TTreeName + SimulatedTree +RootFileName + ../../Outputs/Simulation/Example1.root + diff --git a/NPLib/MUST2/CMakeLists.txt b/NPLib/MUST2/CMakeLists.txt index d72904c227de537b6eb154ec1f1ef32484702c87..8fbac83bcbea46e599f2a88b5f079d2fe785c3ca 100644 --- a/NPLib/MUST2/CMakeLists.txt +++ b/NPLib/MUST2/CMakeLists.txt @@ -2,4 +2,4 @@ add_custom_command(OUTPUT TMust2PhysicsDict.cxx COMMAND ../scripts/build_dict.sh add_custom_command(OUTPUT TMust2DataDict.cxx COMMAND ../scripts/build_dict.sh TMust2Data.h TMust2DataDict.cxx TMust2Data.rootmap libNPMUST2.dylib DEPENDS TMust2Data.h) add_library(NPMUST2 SHARED TMust2Data.cxx TMust2Physics.cxx TMust2DataDict.cxx TMust2PhysicsDict.cxx TMust2Spectra.cxx) target_link_libraries(NPMUST2 ${ROOT_LIBRARIES} NPCore) -install(FILES TMust2Data.h TMust2Physics.h TMust2Spectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) +install(FILES TMust2Data.h TMust2Physics.h TMust2Spectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) \ No newline at end of file diff --git a/NPLib/Physics/nubtab03.asc b/NPLib/Physics/nubtab03.asc index ad13518a4a647bcad839c6aa43d8cda6b39cd92b..ff36e90df6acf0887671baf100b32c1beec5b6aa 100644 --- a/NPLib/Physics/nubtab03.asc +++ b/NPLib/Physics/nubtab03.asc @@ -199,7 +199,7 @@ 030 0130 30Al -15872 14 3.60 s 0.06 3+ 01 B-=100 030 0140 30Si -24432.928 0.030 stbl 0+ 01 IS=3.0872 5 030 0150 30P -20200.6 0.3 2.498 m 0.004 1+ 01 B+=100 -030 0160 30S -14063 3 1.178 s 0.005 0+ 01 B+=100 +030 0160 30S -14059.0 3 1.178 s 0.005 0+ 01 B+=100 030 0170 30Cl 4440# 200# <30 ns 3+# 01 93Po.Ai p ? 030 0180 30Ar 20080# 300# <20 ns 0+ 93Po.Ai 2p ? 031 0090 31F 56290# 600# 1# ms >260ns 5/2+# 99Sa06i B- ?;B-n ? @@ -209,7 +209,7 @@ 031 0130 31Al -14954 20 644 ms 25 (5/2,3/2)+ 01 B-=100;B-n<1.6 031 0140 31Si -22949.01 0.04 157.3 m 0.3 3/2+ 01 B-=100 031 0150 31P -24440.88 0.18 stbl 1/2+ 01 IS=100. -031 0160 31S -19044.6 1.5 2.572 s 0.013 1/2+ 01 B+=100 +031 0160 31S -19042.52 1.5 2.572 s 0.013 1/2+ 01 B+=100 031 0170 31Cl -7070 50 150 ms 25 3/2+ 01 85Ay02d B+=100;B+p=0.7 031 0180 31Ar 11290# 210# 14.4 ms 0.6 5/2(+#) 01 00Fy01t B+=100;B+p=63 7;B+2p=7.2 11;B+3p<1.4;B+pA<0.38;B+A<0.03 032 0100 32Ne 37280# 800# 3.5 ms 0.9 0+ 01 B-=100;B-n ? @@ -245,7 +245,7 @@ 034 0160 34S -29931.79 0.11 stbl 0+ 01 IS=4.29 28 034 0170 34Cl -24439.78 0.18 1.5264 s 0.0014 0+ 01 B+=100 034 0171 34Clm -24293.42 0.18 146.36 0.03 32.00 m 0.04 3+ 01 B+=55.4 6;IT=44.6 6 -034 0180 34Ar -18377.2 0.4 845 ms 3 0+ 01 B+=100 +034 0180 34Ar -18378.2 0.4 845 ms 3 0+ 01 B+=100 034 0190 34K -1480# 300# <40 ns 1+# 01 93Po.Ai p ? 034 0200 34Ca 13150# 300# <35 ns 0+ 01 93Po.Ai 2p ? 035 0110 35Na 39580# 950# 1.5 ms 0.5 3/2+# 01 B-=100;B-n=? @@ -299,7 +299,7 @@ 039 0130 39Al 21400 1470 10# ms >200ns 3/2+# 01 89Gu03i B- ? 039 0140 39Si 1930 340 90# ms >1us 7/2-# 01 90Au.Ai B- ? 039 0150 39P -12870 100 190 ms 50 1/2+# 01 95Re.Atd B-=100;B-n=26 8 -039 0160 39S -23160 50 11.5 s 0.5 (3/2,5/2,7/2)-01 B-=100 +039 0160 39S -23162 50 11.5 s 0.5 (3/2,5/2,7/2)-01 B-=100 039 0170 39Cl -29800.2 1.7 55.6 m 0.2 3/2+ 01 B-=100 039 0180 39Ar -33242 5 269 y 3 7/2- 01 B-=100 039 0190 39K -33807.01 0.19 stbl 3/2+ 01 IS=93.2581 44 @@ -310,7 +310,7 @@ 040 0130 40Al 29300# 700# 10# ms >260ns 02 97Sa14i B- ?;B-n ? 040 0140 40Si 5470 560 20# ms >200ns 0+ 02 89Gu03i B- ?;B-n ? 040 0150 40P -8110 140 153 ms 8 (2-,3-) 02 B-=100;B-n=15.8 21 -040 0160 40S -22870 140 8.8 s 2.2 0+ 02 B-=100 +040 0160 40S -22837 140 8.8 s 2.2 0+ 02 B-=100 040 0170 40Cl -27560 30 1.35 m 0.02 2- 02 B-=100 040 0180 40Ar -35039.8960 0.0027 stbl 0+ 02 IS=99.6003 30 040 0190 40K -33535.20 0.19 1.251 Gy 0.011 4- 02 IS=0.0117 1;B-=89.28 13;B+=10.72 13 @@ -322,7 +322,7 @@ 041 0130 41Al 35700# 800# 2# ms >260ns 3/2+# 02 97Sa14i B- ? 041 0140 41Si 13560 1840 30# ms >200ns 7/2-# 02 89Gu03i B- ? 041 0150 41P -5280 220 150 ms 15 1/2+# 02 B-=100;B-n=30 10 -041 0160 41S -19020 120 1.99 s 0.05 7/2-# 02 B-=100;B-n ? +041 0160 41S -19008 120 1.99 s 0.05 7/2-# 02 B-=100;B-n ? 041 0170 41Cl -27310 70 38.4 s 0.8 (1/2+,3/2+) 02 B-=100 041 0180 41Ar -33067.5 0.3 109.61 m 0.04 7/2- 02 B-=100 041 0190 41K -35559.07 0.19 stbl 3/2+ 02 IS=6.7302 44 @@ -334,7 +334,7 @@ 042 0130 42Al 43680# 900# 1# ms B- ?;B-n ? 042 0140 42Si 18430# 500# 5# ms >200ns 0+ 01 90Le03i B- ?;B-n ? 042 0150 42P 940 450 120 ms 30 01 89Le16t B-=100;B-n=50 20 -042 0160 42S -17680 120 1.013 s 0.015 0+ 01 B-=100;B-n<4 +042 0160 42S -17637 120 1.013 s 0.015 0+ 01 B-=100;B-n<4 042 0170 42Cl -24910 140 6.8 s 0.3 01 B-=100 042 0180 42Ar -34423 6 32.9 y 1.1 0+ 01 B-=100 042 0190 42K -35021.56 0.22 12.360 h 0.012 2- 01 B-=100 @@ -347,7 +347,7 @@ 042 0240 42Cr 5990# 300# 14 ms 3 0+ 01 01Gi01td B+~100;B+p=?;2p ? 043 0140 43Si 26700# 700# 15# ms >260ns 3/2-# 02No11i B- ?;B-n ? 043 0150 43P 5770 970 33 ms 3 1/2+# 01 B-=100;B-n=100 -043 0160 43S -11970 200 260 ms 15 3/2-# 01 98Wi.At B-=100;B-n=40 10 +043 0160 43S -12195 200 260 ms 15 3/2-# 01 98Wi.At B-=100;B-n=40 10 043 0161 43Sxm -11650 200 319 5 480 ns 50 (7/2-) 01 00Sa21ej IT=100 043 0170 43Cl -24170 160 3.07 s 0.07 3/2+# 01 B-=100;B-n ? 043 0180 43Ar -32010 5 5.37 m 0.06 (5/2-) 01 B-=100 @@ -362,7 +362,7 @@ 043 0240 43Cr -2130# 220# 21.6 ms 0.7 (3/2+) 01 B+=100;B+p=23 6;B+2p=6 5;B+A ? 044 0140 44Si 32840# 800# 10# ms 0+ B- ?;B-n ? 044 0150 44P 12100# 700# 30# ms >200ns 99 89Gu03i B- ? -044 0160 44S -9120 390 123 ms 10 0+ 99 B-=100;B-n=18 3 +044 0160 44S -9204 390 123 ms 10 0+ 99 B-=100;B-n=18 3 044 0170 44Cl -20230 110 560 ms 110 99 B-=100;B-n<8 044 0180 44Ar -32673.1 1.6 11.87 m 0.05 0+ 99 B-=100 044 0190 44K -35810 40 22.13 m 0.19 2- 99 B-=100 @@ -377,7 +377,7 @@ 044 0240 44Cr -13460# 50# 54 ms 4 0+ 99 96Fa09d B+=100;B+p=7 3 044 0250 44Mn 6400# 500# <105 ns 2-# 99 p ? 045 0150 45P 17900# 800# 8# ms >200ns 1/2+# 93 90Le03i B- ? -045 0160 45S -3250 1740 82 ms 13 3/2-# 97 B-=100;B-n=54 +045 0160 45S -3989 1740 82 ms 13 3/2-# 97 B-=100;B-n=54 045 0170 45Cl -18360 120 400 ms 40 3/2+# 95 B-=100;B-n=24 4 045 0180 45Ar -29770.6 0.5 21.48 s 0.15 (1/2,3/2,5/2)-95 B-=100 045 0190 45K -36608 10 17.3 m 0.6 3/2+ 95 B-=100 @@ -393,7 +393,7 @@ 046 0150 46P 25500# 900# 4# ms >200ns 00 90Le03i B- ? 046 0160 46S 700# 700# 30# ms >200ns 0+ 00 89Gu03i B- ? 046 0170 46Cl -14710 720 220 ms 40 00 B-=100;B-n=60 9 -046 0180 46Ar -29720 40 8.4 s 0.6 0+ 00 B-=100 +046 0180 46Ar -29730.8 40 8.4 s 0.6 0+ 00 B-=100 046 0190 46K -35418 16 105 s 10 2(-) 00 82To02j B-=100 046 0200 46Ca -43135.1 2.3 stbl >100Ey 0+ 00 99Be64t IS=0.004 3;2B- ? 046 0210 46Sc -41757.1 0.8 83.79 d 0.04 4+ 00 B-=100 @@ -407,7 +407,7 @@ 046 0260 46Fe 760# 350# 9 ms 4 0+ 00 01Gi01td B+=100;B+p=36 20 047 0160 47S 8000# 800# 20# ms >200ns 3/2-# 95 89Gu03i B- ? 047 0170 47Cl -10520# 600# 200# ms >200ns 3/2+# 95 89Gu03i B-=100;B-n<3 -047 0180 47Ar -25910 100 580 ms 120 3/2-# 95 89Ba.Bt B-=100;B-n<1 +047 0180 47Ar -25211 100 580 ms 120 3/2-# 95 89Ba.Bt B-=100;B-n<1 047 0190 47K -35696 8 17.50 s 0.24 1/2+ 95 B-=100 047 0200 47Ca -42340.1 2.3 4.536 d 0.003 7/2- 95 B-=100 047 0210 47Sc -44332.1 2.0 3.3492 d 0.0006 7/2- 95 B-=100 @@ -421,7 +421,7 @@ 047 0270 47Co 10700# 500# 7/2-# p ? 048 0160 48S 13200# 900# 10# ms >200ns 0+ 90Le03i B- ? 048 0170 48Cl -4700# 700# 100# ms >200ns 89Gu03i B- ? -048 0180 48Ar -23720# 300# 500# ms 0+ B- ? +048 0180 48Ar -22280 300# 500# ms 0+ B- ? 048 0190 48K -32124 24 6.8 s 0.2 (2-) 95 B-=100;B-n=1.14 15 048 0200 48Ca -44214 4 53 Ey 17 0+ 95 00Br63t IS=0.187 21;2B-=?;B- ? 048 0210 48Sc -44496 5 43.67 h 0.09 6+ 95 B-=100 @@ -434,7 +434,7 @@ 048 0280 48Ni 18400# 500# 10# ms >500ns 0+ 01 00Bl01i 2p ? 049 0160 49S 22000# 950# <200 ns 3/2-# 97 90Le03i n ? 049 0170 49Cl 300# 800# 50# ms >200ns 3/2+# 95 89Gu03i B- ? -049 0180 49Ar -18150# 500# 170 ms 50 3/2-# 95 03We09td B-=100;B-n=65 20 +049 0180 49Ar -17800 500# 170 ms 50 3/2-# 95 03We09td B-=100;B-n=65 20 049 0190 49K -30320 70 1.26 s 0.05 (3/2+) 95 B-=100;B-n=86 9 049 0200 49Ca -41289 4 8.718 m 0.006 3/2- 95 B-=100 049 0210 49Sc -46552 4 57.2 m 0.2 7/2- 95 B-=100 @@ -442,7 +442,7 @@ 049 0230 49V -47956.9 1.2 330 d 15 7/2- 95 EC=100 049 0240 49Cr -45330.5 2.4 42.3 m 0.1 5/2- 95 B+=100 049 0250 49Mn -37616 24 382 ms 7 5/2- 01 B+=100 -049 0260 49Fe -24580# 150# 70 ms 3 (7/2-) 01 96Fa09j B+=100;B+p=52 10 +049 0260 49Fe -24750 150# 70 ms 3 (7/2-) 01 96Fa09j B+=100;B+p=52 10 049 0270 49Co -9580# 260# <35 ns 7/2-# 97 94Bl10i p ? 049 0280 49Ni 9000# 400# 13 ms 4 7/2-# 97 01Gi01td B+=100;B+p=? 050 0170 50Cl 7300# 900# 20# ms B- ? @@ -456,7 +456,7 @@ 050 0240 50Cr -50259.5 1.0 stbl >1.3Ey 0+ 95 03Bi05t IS=4.345 13;2B+ ? 050 0250 50Mn -42626.8 1.0 283.9 ms 0.5 0+ 95 B+=100 050 0251 50Mnm -42398 7 229 7 1.75 m 0.03 5+ 95 B+=100 -050 0260 50Fe -34480 60 155 ms 11 0+ 01 B+=100;B+p~0 +050 0260 50Fe -34488 60 155 ms 11 0+ 01 B+=100;B+p~0 050 0270 50Co -17200# 170# 44 ms 4 (6+) 01 96Fa09jd B+=100;B+p=54 12 050 0280 50Ni -3790# 260# 9.1 ms 1.8 0+ 97 01Ma.At B+ ? 051 0170 51Cl 13500# 1000# 2# ms >200ns 3/2+# 97 90Le03i B- ? @@ -468,14 +468,14 @@ 051 0230 51V -52201.4 1.0 stbl 7/2- 97 IS=99.750 4 051 0240 51Cr -51448.8 1.0 27.7025 d 0.0024 7/2- 97 EC=100 051 0250 51Mn -48241.3 1.0 46.2 m 0.1 5/2- 97 B+=100 -051 0260 51Fe -40222 15 305 ms 5 5/2- 97 B+=100 +051 0260 51Fe -40202 15 305 ms 5 5/2- 97 B+=100 051 0270 51Co -27270# 150# 60# ms >200ns 7/2-# 97 87Po04i B+ ? 051 0280 51Ni -11440# 260# 30# ms >200ns 7/2-# 97 87Po04i B+ ? 052 0180 52Ar -3000# 900# 10# ms 0+ 00 B- ? 052 0190 52K -16200# 700# 105 ms 5 2-# 00 ABBW d B-=100;B-n~64;B-2n~21 052 0200 52Ca -32510 700 4.6 s 0.3 0+ 00 B-=100;B-n<2 052 0210 52Sc -40360 190 8.2 s 0.2 3(+) 00 B-=100 -052 0220 52Ti -49465 7 1.7 m 0.1 0+ 00 B-=100 +052 0220 52Ti -49468 7 1.7 m 0.1 0+ 00 B-=100 052 0230 52V -51441.3 1.0 3.743 m 0.005 3+ 00 B-=100 052 0240 52Cr -55416.9 0.8 stbl 0+ 00 IS=83.789 18 052 0250 52Mn -50705.4 2.0 5.591 d 0.003 6+ 00 B+=100 @@ -494,7 +494,7 @@ 053 0230 53V -51849 3 1.60 m 0.04 7/2- 99 B-=100 053 0240 53Cr -55284.7 0.8 stbl 3/2- 99 IS=9.501 17 053 0250 53Mn -54687.9 0.8 3.7 My 0.4 7/2- 99 EC=100 -053 0260 53Fe -50945.3 1.8 8.51 m 0.02 7/2- 99 B+=100 +053 0260 53Fe -50946.3 1.8 8.51 m 0.02 7/2- 99 B+=100 053 0261 53Fem -47904.9 1.8 3040.4 0.3 2.526 m 0.024 19/2- 99 97Ge11t IT=100 053 0270 53Co -42645 18 242 ms 8 7/2-# 99 02Lo13t B+=100 053 0271 53Com -39447 22 3197 29 p 247 ms 12 (19/2-) 99 B+~98.5;p~1.5 @@ -509,7 +509,7 @@ 054 0231 54Vxm -49783 15 108 3 900 ns 500 (5+) 98Gr14ej IT=100 054 0240 54Cr -56932.5 0.8 stbl 0+ 01 IS=2.365 7 054 0250 54Mn -55555.4 1.3 312.03 d 0.03 3+ 01 02Un02t EC=100;B-<2.9e-4;e+=1.28e-7 25 -054 0260 54Fe -56252.5 0.7 stbl 0+ 01 IS=5.845 35;2B+ ? +054 0260 54Fe -56253.5 0.7 stbl 0+ 01 IS=5.845 35;2B+ ? 054 0261 54Fem -49725.6 0.9 6526.9 0.6 364 ns 7 10+ 01 IT=100 054 0270 54Co -48009.5 0.7 193.23 ms 0.14 0+ 01 B+=100 054 0271 54Com -47812.1 0.9 197.4 0.5 1.48 m 0.02 (7)+ 01 B+=100 @@ -523,7 +523,7 @@ 055 0230 55V -49150 100 6.54 s 0.15 7/2-# 01 B-=100 055 0240 55Cr -55107.5 0.8 3.497 m 0.003 3/2- 01 B-=100 055 0250 55Mn -57710.6 0.7 stbl 5/2- 01 IS=100. -055 0260 55Fe -57479.4 0.7 2.737 y 0.011 3/2- 01 EC=100 +055 0260 55Fe -57480.4 0.7 2.737 y 0.011 3/2- 01 EC=100 055 0270 55Co -54027.6 0.7 17.53 h 0.03 7/2- 01 B+=100 055 0280 55Ni -45336 11 204.7 ms 1.7 7/2- 01 02Lo13t B+=100 055 0290 55Cu -31620# 300# 40# ms >200ns 3/2-# 01 87Po04i B+ ?;p ? @@ -534,7 +534,7 @@ 056 0230 56V -46080 200 216 ms 4 (1+) 99 03Ma02tj B-=100;B-n ? 056 0240 56Cr -55281.2 1.9 5.94 m 0.10 0+ 99 B-=100 056 0250 56Mn -56909.7 0.7 2.5789 h 0.0001 3+ 99 B-=100 -056 0260 56Fe -60605.4 0.7 stbl 0+ 99 IS=91.754 36 +056 0260 56Fe -60606.4 0.7 stbl 0+ 99 IS=91.754 36 056 0270 56Co -56039.4 2.1 77.23 d 0.03 4+ 99 B+=100 056 0280 56Ni -53904 11 6.075 d 0.010 0+ 99 B+=100 056 0290 56Cu -38600# 140# 93 ms 3 (4+) 99 01Bo54tjd B+=100;B+p=0.40 12 diff --git a/NPLib/scripts/Style_nptool.C b/NPLib/scripts/Style_nptool.C index d6960b6cd055cd40953d747050db441dd5c49c13..2ab7df15ed77879aa6af30fc1af7f194b720d8f0 100644 --- a/NPLib/scripts/Style_nptool.C +++ b/NPLib/scripts/Style_nptool.C @@ -9,25 +9,25 @@ void Style_nptool(){ TStyle* style_nptool = new TStyle("nptool", "style_nptool"); //General - style_nptool->SetFrameFillColor(kWhite); - style_nptool->SetFrameBorderMode(0); + style_nptool->SetFrameFillColor(kWhite); + style_nptool->SetFrameBorderMode(0); style_nptool->SetFrameLineColor(kBlack); style_nptool->SetStatColor(kWhite); style_nptool->SetFillColor(kWhite); - style_nptool->SetTitleFillColor(kWhite); + style_nptool->SetTitleFillColor(kWhite); // Canvas - style_nptool->SetCanvasColor(kWhite); + style_nptool->SetCanvasColor(kWhite); style_nptool->SetCanvasDefH(800); style_nptool->SetCanvasDefW(800); - style_nptool->SetCanvasBorderMode(0); + style_nptool->SetCanvasBorderMode(0); // Pad style_nptool->SetPadBottomMargin(0.15); style_nptool->SetPadLeftMargin(0.15); style_nptool->SetPadTopMargin(0.05); style_nptool->SetPadRightMargin(0.10); - style_nptool->SetPadBorderMode(0); + style_nptool->SetPadBorderMode(0); style_nptool->SetPadBorderSize(1); style_nptool->SetPadColor(kWhite); style_nptool->SetPadTickX(1); @@ -35,19 +35,25 @@ void Style_nptool(){ // Desable stat title and fit style_nptool->SetOptStat(0); - style_nptool->SetOptTitle(0); - style_nptool->SetOptFit(0); + //style_nptool->SetOptTitle(0); + //style_nptool->SetOptFit(0); // x axis - style_nptool->SetTitleXSize(0.06); + style_nptool->SetTitleXSize(0.06); style_nptool->SetTitleXOffset(1.0); style_nptool->SetLabelOffset(0.1,"X"); style_nptool->SetLabelSize(0.04,"X"); style_nptool->SetLabelOffset(0.006,"X"); + + /*style_nptool->SetTitleBorderSize(0); + style_nptool->SetTitleX(0.1f); + style_nptool->SetTitleW(0.8f); + style_nptool->SetTitleAlign(3);*/ // y axis + //style_nptool->GetYaxis()->CenterTitle(); style_nptool->SetTitleYSize(0.06); - style_nptool->SetTitleYOffset(1.1); + style_nptool->SetTitleYOffset(1.1); style_nptool->SetLabelOffset(0.1,"Y"); style_nptool->SetLabelSize(0.04,"Y"); style_nptool->SetLabelOffset(0.006,"Y");