finsihed PID calibration
This commit is contained in:
parent
81cbf1c2cc
commit
44087a0df2
|
@ -76,7 +76,7 @@ TF1 * FitHist2(TH1F * hist1, TH1F * hist2, double a0, double a1, double scale, d
|
||||||
fit2->SetParameters(par);
|
fit2->SetParameters(par);
|
||||||
fit2->SetParLimits(0, 0, 15);
|
fit2->SetParLimits(0, 0, 15);
|
||||||
fit2->SetParLimits(1, 0.6, 1.2);
|
fit2->SetParLimits(1, 0.6, 1.2);
|
||||||
fit2->SetParLimits(3, -0.00001, 0.00001);
|
fit2->SetParLimits(3, -0.00002, 0.00001);
|
||||||
//fit2->FixParameter(3, 0);
|
//fit2->FixParameter(3, 0);
|
||||||
fit2->SetLineWidth(2);
|
fit2->SetLineWidth(2);
|
||||||
fit2->SetLineColor(4);
|
fit2->SetLineColor(4);
|
||||||
|
|
|
@ -42,9 +42,9 @@
|
||||||
318 8.209070 1.000661 1.207103 0.887063 -0.0000093263
|
318 8.209070 1.000661 1.207103 0.887063 -0.0000093263
|
||||||
319 8.011329 0.999823 1.600204 0.886653 -0.0000091960
|
319 8.011329 0.999823 1.600204 0.886653 -0.0000091960
|
||||||
320 0.326489 1.001083 0.552779 0.888471 -0.0000094284
|
320 0.326489 1.001083 0.552779 0.888471 -0.0000094284
|
||||||
|
321 0.257637 1.000806 0.321734 0.889154 -0.0000095403
|
||||||
322 0.241687 1.000738 0.340305 0.889576 -0.0000096254
|
322 0.241687 1.000738 0.340305 0.889576 -0.0000096254
|
||||||
323 0.167235 1.000447 0.501191 0.888241 -0.0000095490
|
323 0.167234 1.000447 0.499583 0.888244 -0.0000095494
|
||||||
323 -9.981457 0.980308 0.501191 0.888241 -0.0000095490
|
|
||||||
324 0.054908 0.999928 0.364381 0.889151 -0.0000095068
|
324 0.054908 0.999928 0.364381 0.889151 -0.0000095068
|
||||||
325 8.050909 0.999893 1.242025 0.888227 -0.0000091104
|
325 8.050909 0.999893 1.242025 0.888227 -0.0000091104
|
||||||
326 0.250943 1.000691 0.338226 0.889374 -0.0000093779
|
326 0.250943 1.000691 0.338226 0.889374 -0.0000093779
|
||||||
|
|
88
peachCake.C
88
peachCake.C
|
@ -1,8 +1,6 @@
|
||||||
#define peachCake_cxx
|
#define peachCake_cxx
|
||||||
|
|
||||||
#include "peachCake.h"
|
#include "peachCake.h"
|
||||||
#include <TH2.h>
|
|
||||||
#include <TH1.h>
|
|
||||||
#include <TMath.h>
|
#include <TMath.h>
|
||||||
#include <TCanvas.h>
|
#include <TCanvas.h>
|
||||||
#include <TStyle.h>
|
#include <TStyle.h>
|
||||||
|
@ -58,14 +56,6 @@ vector<vector<double>> eCorr;
|
||||||
|
|
||||||
double TOFCorrection(double x){
|
double TOFCorrection(double x){
|
||||||
|
|
||||||
//for run 238
|
|
||||||
//return (-225.8 - 0.040017 * energy
|
|
||||||
// +0.0000710839 * energy*energy
|
|
||||||
// -6.28402e-8 * TMath::Power(energy,3)
|
|
||||||
// +2.90563e-11 * TMath::Power(energy,4)
|
|
||||||
// -6.70137e-15 * TMath::Power(energy,5)
|
|
||||||
// +6.08418e-19 * TMath::Power(energy,6) );
|
|
||||||
|
|
||||||
// for run 250
|
// for run 250
|
||||||
double par[6] = {10.9179,
|
double par[6] = {10.9179,
|
||||||
0.00416034,
|
0.00416034,
|
||||||
|
@ -77,23 +67,6 @@ double TOFCorrection(double x){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TH2F * createTH2F(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup){
|
|
||||||
|
|
||||||
TH2F * hist2 = (TH2F *) gROOT->FindObjectAny( name );
|
|
||||||
if ( hist2 == NULL ) hist2 = new TH2F( name , title , nbinsx, xlow, xup, nbinsy, ylow, yup);
|
|
||||||
hist2->Reset();
|
|
||||||
|
|
||||||
return hist2;
|
|
||||||
}
|
|
||||||
|
|
||||||
TH1F * createTH1F(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup){
|
|
||||||
|
|
||||||
TH1F * hist1 = (TH1F *) gROOT->FindObjectAny( name );
|
|
||||||
if ( hist1 == NULL ) hist1 = new TH1F( name , title , nbinsx, xlow, xup);
|
|
||||||
hist1->Reset();
|
|
||||||
|
|
||||||
return hist1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void peachCake::Begin(TTree * /*tree*/){
|
void peachCake::Begin(TTree * /*tree*/){
|
||||||
|
|
||||||
|
@ -102,7 +75,7 @@ void peachCake::Begin(TTree * /*tree*/){
|
||||||
hCloverID = createTH2F("hCloverID", "Clover; ID; energy [keV]", 52, 0, 52, 400, 0, 2000);
|
hCloverID = createTH2F("hCloverID", "Clover; ID; energy [keV]", 52, 0, 52, 400, 0, 2000);
|
||||||
|
|
||||||
hPID0 = createTH2F("hPID0", "PID raw; ns; msx100", tofRange[0], tofRange[1], tofRange[2], dERange[0], dERange[1], dERange[2]);
|
hPID0 = createTH2F("hPID0", "PID raw; ns; msx100", tofRange[0], tofRange[1], tofRange[2], dERange[0], dERange[1], dERange[2]);
|
||||||
hPID = createTH2F("hPID", "PID corrected; ns; msx100", tofRange[0], tofRange[1], tofRange[2], dERange[0], dERange[1], dERange[2]);
|
hPID = createTH2F("hPID", "PID slew corrected; ns; msx100", tofRange[0], tofRange[1], tofRange[2], dERange[0], dERange[1], dERange[2]);
|
||||||
hPID2 = createTH2F("hPID2", "PID; A/Q; Z", tofRange[0], 2.0, 4.2, dERange[0], 0, 16.5);
|
hPID2 = createTH2F("hPID2", "PID; A/Q; Z", tofRange[0], 2.0, 4.2, dERange[0], 0, 16.5);
|
||||||
|
|
||||||
hTOF = createTH1F("hTOF", "TOF", tofRange[0], tofRange[1], tofRange[2]);
|
hTOF = createTH1F("hTOF", "TOF", tofRange[0], tofRange[1], tofRange[2]);
|
||||||
|
@ -136,21 +109,6 @@ void peachCake::Begin(TTree * /*tree*/){
|
||||||
if( pidCorrFileName != "" ){
|
if( pidCorrFileName != "" ){
|
||||||
pidCorr = LoadCorrectionParameters(pidCorrFileName, 1);
|
pidCorr = LoadCorrectionParameters(pidCorrFileName, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
cutFile = new TFile(cutFileName, "READ");
|
|
||||||
bool listExist = cutFile->GetListOfKeys()->Contains("cutList");
|
|
||||||
if( listExist ) {
|
|
||||||
cutList = (TObjArray*) cutFile->FindObjectAny("cutList");
|
|
||||||
numCut = cutList->GetLast()+1;
|
|
||||||
printf("----- found %d cuts \n", numCut);
|
|
||||||
for( int k = 0; k < numCut; k++){
|
|
||||||
if( cutList->At(k) != NULL ){
|
|
||||||
printf("found a cut at %2d \n", k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
* */
|
|
||||||
|
|
||||||
printf("============ start \n");
|
printf("============ start \n");
|
||||||
|
|
||||||
|
@ -168,6 +126,7 @@ Bool_t peachCake::Process(Long64_t entry){
|
||||||
b_cfd->GetEntry(entry);
|
b_cfd->GetEntry(entry);
|
||||||
b_runID->GetEntry(entry);
|
b_runID->GetEntry(entry);
|
||||||
|
|
||||||
|
//========= initialization
|
||||||
energy = TMath::QuietNaN();
|
energy = TMath::QuietNaN();
|
||||||
Long64_t startTimeL = 0;
|
Long64_t startTimeL = 0;
|
||||||
Long64_t startTimeR = 0;
|
Long64_t startTimeR = 0;
|
||||||
|
@ -192,10 +151,10 @@ Bool_t peachCake::Process(Long64_t entry){
|
||||||
crossTime = 0;
|
crossTime = 0;
|
||||||
|
|
||||||
for( int i = 0; i < 4 ; i++) {
|
for( int i = 0; i < 4 ; i++) {
|
||||||
dyIonsTime[i] = 0;
|
dyIonsTime[i] = 0;
|
||||||
dyBetaTime[i] = 0;
|
dyBetaTime[i] = 0;
|
||||||
dyIonsEnergy[i] = 0;
|
dyIonsEnergy[i] = 0;
|
||||||
dyBetaEnergy[i] = 0;
|
dyBetaEnergy[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int multiDyBeta = 0;
|
int multiDyBeta = 0;
|
||||||
|
@ -203,7 +162,25 @@ Bool_t peachCake::Process(Long64_t entry){
|
||||||
|
|
||||||
flag = 0;
|
flag = 0;
|
||||||
vetoFlag = 0;
|
vetoFlag = 0;
|
||||||
|
|
||||||
|
//============ format canvas title
|
||||||
|
if( entry == 0 ){
|
||||||
|
if( runID/100 == lastRunID + 1 ) {
|
||||||
|
int len = canvasTitle.Sizeof();
|
||||||
|
if( contFlag == false) {
|
||||||
|
canvasTitle.Remove(len-3);
|
||||||
|
canvasTitle += " - ";
|
||||||
|
}
|
||||||
|
if( contFlag == true) canvasTitle.Remove(len-6);
|
||||||
|
contFlag = true;
|
||||||
|
}
|
||||||
|
if( runID/100 > lastRunID + 1 ) contFlag = false;
|
||||||
|
if( runID/100 > lastRunID ){
|
||||||
|
canvasTitle += Form("%03d, ", runID/100 );
|
||||||
|
lastRunID = runID/100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//======= Scanning the event
|
//======= Scanning the event
|
||||||
for( int i = 0; i < multi; i++){
|
for( int i = 0; i < multi; i++){
|
||||||
//----- clover
|
//----- clover
|
||||||
|
@ -327,9 +304,6 @@ Bool_t peachCake::Process(Long64_t entry){
|
||||||
|
|
||||||
///======== Z vs A/Q
|
///======== Z vs A/Q
|
||||||
double c = 299.792458; /// mm/ns
|
double c = 299.792458; /// mm/ns
|
||||||
/// exp value
|
|
||||||
///double FL = 37656 ; /// mm
|
|
||||||
///double Brho = 4.90370; /// T.mm
|
|
||||||
double FL = 56423 ; /// mm
|
double FL = 56423 ; /// mm
|
||||||
double Brho = 9.04; /// T.mm
|
double Brho = 9.04; /// T.mm
|
||||||
double ma = 931.5;
|
double ma = 931.5;
|
||||||
|
@ -342,16 +316,9 @@ Bool_t peachCake::Process(Long64_t entry){
|
||||||
double Z = sqrt((energy + 11.9473) / 23.097) * TMath::Power(beta / beta0, 1.3) ;
|
double Z = sqrt((energy + 11.9473) / 23.097) * TMath::Power(beta / beta0, 1.3) ;
|
||||||
double AoQ = c * Brho / gamma/ beta / ma;
|
double AoQ = c * Brho / gamma/ beta / ma;
|
||||||
|
|
||||||
//printf("tof : %f, beta: %f (%f), Z : %f, A/Q : %f \n", TOF + tofOffset, beta, beta0, Z, AoQ);
|
|
||||||
|
|
||||||
//Z = -0.15938 + 1.01736 *Z + 0.000203316 * Z*Z;
|
|
||||||
//Z = -0.254632 + 1.06285 * Z - 0.00539634 * Z * Z + 0.000169443 * Z * Z * Z; ///2022-06-09
|
|
||||||
|
|
||||||
Z = 0.0153343 + 1.00339 * Z;
|
Z = 0.0153343 + 1.00339 * Z;
|
||||||
|
|
||||||
|
|
||||||
hPID2->Fill(AoQ, Z);
|
hPID2->Fill(AoQ, Z);
|
||||||
|
|
||||||
hZ->Fill(Z);
|
hZ->Fill(Z);
|
||||||
|
|
||||||
if( 3.5 > Z && Z > 2.5 ) hZ3->Fill( AoQ * 3);
|
if( 3.5 > Z && Z > 2.5 ) hZ3->Fill( AoQ * 3);
|
||||||
|
@ -472,7 +439,7 @@ Bool_t peachCake::Process(Long64_t entry){
|
||||||
|
|
||||||
void peachCake::Terminate(){
|
void peachCake::Terminate(){
|
||||||
|
|
||||||
printf("\n===============\n");
|
printf("\n=============================================\n");
|
||||||
|
|
||||||
if( saveNewTree ){
|
if( saveNewTree ){
|
||||||
saveFile->cd();
|
saveFile->cd();
|
||||||
|
@ -484,6 +451,9 @@ void peachCake::Terminate(){
|
||||||
|
|
||||||
gStyle->SetOptStat(111111);
|
gStyle->SetOptStat(111111);
|
||||||
int div[2] = {4, 2} ; ///x, y
|
int div[2] = {4, 2} ; ///x, y
|
||||||
|
int len = canvasTitle.Sizeof();
|
||||||
|
canvasTitle.Remove(len - 3);
|
||||||
|
printf("|%s|\n", canvasTitle.Data());
|
||||||
TCanvas * c1 = new TCanvas("c1", canvasTitle, 700 * div[0], 700 * div[1]);
|
TCanvas * c1 = new TCanvas("c1", canvasTitle, 700 * div[0], 700 * div[1]);
|
||||||
c1->Divide(div[0], div[1]);
|
c1->Divide(div[0], div[1]);
|
||||||
|
|
||||||
|
|
32
peachCake.h
32
peachCake.h
|
@ -11,6 +11,8 @@
|
||||||
#include <TROOT.h>
|
#include <TROOT.h>
|
||||||
#include <TChain.h>
|
#include <TChain.h>
|
||||||
#include <TFile.h>
|
#include <TFile.h>
|
||||||
|
#include <TH2.h>
|
||||||
|
#include <TH1.h>
|
||||||
#include <TSelector.h>
|
#include <TSelector.h>
|
||||||
#include <TBenchmark.h>
|
#include <TBenchmark.h>
|
||||||
#include "cmath"
|
#include "cmath"
|
||||||
|
@ -52,7 +54,9 @@ public :
|
||||||
pidCorrFileName = "";
|
pidCorrFileName = "";
|
||||||
fHistRootName = "";
|
fHistRootName = "";
|
||||||
plotHists = true;
|
plotHists = true;
|
||||||
canvasTitle = "";
|
canvasTitle = "Run: ";
|
||||||
|
lastRunID = -1;
|
||||||
|
contFlag = false;
|
||||||
}
|
}
|
||||||
virtual ~peachCake() { }
|
virtual ~peachCake() { }
|
||||||
virtual Int_t Version() const { return 2; }
|
virtual Int_t Version() const { return 2; }
|
||||||
|
@ -124,7 +128,8 @@ public :
|
||||||
bool plotHists;
|
bool plotHists;
|
||||||
|
|
||||||
TString canvasTitle;
|
TString canvasTitle;
|
||||||
|
int lastRunID;
|
||||||
|
bool contFlag;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -152,10 +157,6 @@ void peachCake::Init(TTree *tree){
|
||||||
fChain->SetBranchAddress("multiBeam", &multiBeam, &b_multiplicity_Beam);
|
fChain->SetBranchAddress("multiBeam", &multiBeam, &b_multiplicity_Beam);
|
||||||
fChain->SetBranchAddress("runID", &runID, &b_runID);
|
fChain->SetBranchAddress("runID", &runID, &b_runID);
|
||||||
|
|
||||||
//============ Canvas Title
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//============ new tree
|
//============ new tree
|
||||||
printf(" is save tree? :%d \n", saveNewTree);
|
printf(" is save tree? :%d \n", saveNewTree);
|
||||||
|
|
||||||
|
@ -230,4 +231,23 @@ void peachCake::SlaveTerminate(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TH2F * createTH2F(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup){
|
||||||
|
|
||||||
|
TH2F * hist2 = (TH2F *) gROOT->FindObjectAny( name );
|
||||||
|
if ( hist2 == NULL ) hist2 = new TH2F( name , title , nbinsx, xlow, xup, nbinsy, ylow, yup);
|
||||||
|
hist2->Reset();
|
||||||
|
|
||||||
|
return hist2;
|
||||||
|
}
|
||||||
|
|
||||||
|
TH1F * createTH1F(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup){
|
||||||
|
|
||||||
|
TH1F * hist1 = (TH1F *) gROOT->FindObjectAny( name );
|
||||||
|
if ( hist1 == NULL ) hist1 = new TH1F( name , title , nbinsx, xlow, xup);
|
||||||
|
hist1->Reset();
|
||||||
|
|
||||||
|
return hist1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // #ifdef peachCake_cxx
|
#endif // #ifdef peachCake_cxx
|
||||||
|
|
35
script.C
35
script.C
|
@ -17,22 +17,29 @@ void script() {
|
||||||
//chain->Add("root_data/run-0241-*.root");
|
//chain->Add("root_data/run-0241-*.root");
|
||||||
|
|
||||||
// new beam
|
// new beam
|
||||||
chain->Add("root_data/run-024[6-8]*.root");
|
//chain->Add("root_data/run-024[6-8]*.root");
|
||||||
chain->Add("root_data/run-0250*.root");
|
//chain->Add("root_data/run-0250*.root");
|
||||||
chain->Add("root_data/run-025[1-4].root");
|
//chain->Add("root_data/run-025[1-4].root");
|
||||||
chain->Add("root_data/run-025[6-9].root");
|
//chain->Add("root_data/run-025[6-9].root");
|
||||||
chain->Add("root_data/run-026[1-4]*.root");
|
//chain->Add("root_data/run-026[1-4]*.root");
|
||||||
chain->Add("root_data/run-0269*.root");
|
//chain->Add("root_data/run-0269*.root");
|
||||||
chain->Add("root_data/run-027[0-1]*.root");
|
//chain->Add("root_data/run-027[0-1]*.root");
|
||||||
chain->Add("root_data/run-028[3-4]*.root");
|
//chain->Add("root_data/run-028[3-4]*.root");
|
||||||
chain->Add("root_data/run-028[6-8]*.root");
|
//chain->Add("root_data/run-028[6-8]*.root");
|
||||||
chain->Add("root_data/run-0292*.root");
|
//chain->Add("root_data/run-0292*.root");
|
||||||
chain->Add("root_data/run-029[4-6]*.root");
|
//chain->Add("root_data/run-029[4-6]*.root");
|
||||||
chain->Add("root_data/run-029[8-9]*.root");
|
//chain->Add("root_data/run-029[8-9]*.root");
|
||||||
chain->Add("root_data/run-03*.root");
|
//chain->Add("root_data/run-031*.root");
|
||||||
|
//chain->Add("root_data/run-032*.root");
|
||||||
|
|
||||||
|
|
||||||
//chain->Add("root_data/run-0250*.root");
|
chain->Add("root_data/run-0246-00.root");
|
||||||
|
chain->Add("root_data/run-0246-01.root");
|
||||||
|
chain->Add("root_data/run-0247-00.root");
|
||||||
|
chain->Add("root_data/run-0247-01.root");
|
||||||
|
chain->Add("root_data/run-0248-00.root");
|
||||||
|
chain->Add("root_data/run-0250-00.root");
|
||||||
|
chain->Add("root_data/run-0250-01.root");
|
||||||
|
|
||||||
bool isSaveNewTree = false;
|
bool isSaveNewTree = false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user