#include "TSystem.h" #include "TFile.h" #include "TTree.h" #include "TChain.h" #include "TCanvas.h" #include "TBox.h" #include "TCut.h" #include "TCutG.h" #include "TROOT.h" using std::cout; using std::endl; void showTritium(const Long64_t drawEntries = 100000) { // const Long64_t drawEntries = 100000; // TFile *fr = new TFile("~/data/exp1804/h5_11_00.root"); TChain *tr = new TChain("AnalysisxTree"); tr->Add("~/data/exp1804/h5_14_0?.root"); // tr->Add("~/data/exp1804/be10_0?_?0.root"); TChain *trCal = new TChain("cal"); // trCal->Add("~/data/exp1804/h5_11_0?_calib.root"); trCal->Add("~/data/exp1804/h5_14_0?_calib.root"); // trCal->Add("~/data/exp1804/be10_0?_?0_calib.root"); tr->AddFriend(trCal); // TFile *fcal = new TFile("~/data/exp1804/calib/si_20_03_calib.root"); // TTree *tAlphaCal = (TTree*)fcal->Get("cal"); // tAlphaCal->SetMarkerColor(kRed); // tAlphaCal->SetMarkerStyle(20); // tAlphaCal->SetMarkerSize(.6); TFile *fc = new TFile("cutsIdentification.root", "READ"); TCutG *cUS = (TCutG*)fc->Get("c7UpperShadow"); TCutG *cLS = (TCutG*)fc->Get("c7LowerShadow"); cLS->SetLineColor(kMagenta); TCutG *cMA = (TCutG*)fc->Get("c7MainAlpha"); TCutG *cA = (TCutG*)fc->Get("c7All"); TCutG *cBL = (TCutG*)fc->Get("cBeamLeft"); TCutG *cBR = (TCutG*)fc->Get("cBeamRight"); // const Int_t drawEntries = 6000000; // const Int_t drawEntries = tr->GetEntries(); tr->GetListOfFiles()->Print(); trCal->GetListOfFiles()->Print(); cout << tr->GetEntries() << " events." << endl; cout << trCal->GetEntries() << " calibrated events." << endl; TString varName; TString condition; cout << drawEntries << " entries in input chain will be processed." << endl; const Int_t firstThinStrip = 5; TFile *fCutsTime = new TFile("cutsTimeCsI.root"); TFile *fCutsTritium = new TFile("cutsDeltaEtritium.root"); TCutG *currCut; TString cutName; TString timeSiCondition; timeSiCondition.Form("0.3*tSQX_R[0]-0.125*tF5[0]<100"); // TString auxCon; for (Int_t j = 1; j<32; j++) { condition.Form(" && 0.3*tSQX_R[%d]-0.125*tF5[0]<100", j); timeSiCondition.Append(condition); } cout << timeSiCondition << endl; ///////////////////////////////////////////////////////////////////// // c1 TCanvas *c1 = new TCanvas("c1", "tritium raw", 1600, 800); c1->Divide(4,2); for (Int_t i = 0; i < 8; i++) { c1->cd(i+1); varName.Form("SQRXE:NeEvent.CsI_R[%d]", i+firstThinStrip); condition.Form("NeEvent.CsI_R[%d]<4000 " "&& SQRXEsum<40 && SQRXmult==1 && SQRXE[0]<1 " "&& trigger==3", i+firstThinStrip); tr->SetMarkerColor(kBlack); tr->SetMarkerStyle(20); tr->SetMarkerSize(0.1); tr->Draw(varName, condition, "", drawEntries); c1->Update(); }//*/ // return; ///////////////////////////////////////////////////////////////////// // c2 /*TCanvas *c2 = new TCanvas("c2", "time from right Si", 1600, 800); c2->Divide(4,2); for (Int_t i = 0; i < 8; i++) { c2->cd(i+1); // varName.Form("SQ20E[%d]:SQLYEsum", i+firstThinStrip); varName.Form("SQRXE[%d]:0.3*tSQX_R[%d]-0.125*tF5[0]", i+firstThinStrip, i+firstThinStrip); condition.Form("tSQX_R[%d]>0" // "&& SQLYEsum>1.1 && SQLYEsum<30 " // "&& SQLYE[0]<1. && SQLYE[15]<1." // "&& SQLYmult==1 && SQLXmult==1" "&& trigger==3", i+firstThinStrip); tr->SetMarkerColor(kBlack); tr->Draw(varName, condition, "", drawEntries); // tr->Draw(varName, condition, "", drawEntries); condition.Form( // "tSQX_R[%d]>0" // "&& 0.3*tSQX_R-0.125*tF5[0] <100 " // "&& SQLYE[0]<1. && SQLYE[15]<1." // "&& SQLYmult==1 && SQLXmult==1" "trigger==3 && %s", // i+firstThinStrip, timeSiCondition.Data()); tr->SetMarkerColor(kRed); tr->Draw(varName, condition, "same", drawEntries); c2->Update(); }//for */ // return; ///////////////////////////////////////////////////////////////////// // c3 /*TCanvas *c3 = new TCanvas("c3", "time from CsI", 1000, 900); c3->Divide(4,4); // gROOT->ProcessLine(".x cutPokus.cxx"); for (Int_t i = 0; i < 16; i++) { c3->cd(i+1); // varName.Form("SQRXE[%d]:0.3*tSQX_R[%d]-0.125*tF5[]", i+firstThinStrip, i+firstThinStrip); // condition.Form("SQRXE[%d]>3 && trigger==3", // i+firstThinStrip); cutName.Form("cTime%d", i); currCut = (TCutG*)fCutsTime->Get(cutName); varName.Form("CsI_R[%d]:0.125*tCsI_R[%d]-0.125*tF5[0]", i, i); condition.Form("CsI_R[%d]>3 && trigger==3" "&& 0.125*tCsI_R[%d]-0.125*tF5[0] > -80" "&& 0.125*tCsI_R[%d]-0.125*tF5[0] < 0" "&& CsI_R[%d] < 4500", i, i, i, i); tr->SetMarkerColor(kBlack); tr->Draw(varName, condition, "", drawEntries); // tr->Draw(varName, condition, "", drawEntries); currCut->Draw("same"); c3->Update(); }//*/ // return; ///////////////////////////////////////////////////////////////////// // c4 TCanvas *c4 = new TCanvas("c4", "PID plot from CsI filtered for time", 1600, 800); c4->Divide(4,2); for (Int_t i = 0; i < 8; i++) { c4->cd(i+1); cutName.Form("cTime%d", i+firstThinStrip); currCut = (TCutG*)fCutsTime->Get(cutName); varName.Form("SQRXE:NeEvent.CsI_R[%d]", i+firstThinStrip); condition.Form("NeEvent.CsI_R[%d]<3500" "&& SQRXEsum<25 && SQRXEsum>1 && SQRXmult==1" "&& trigger==3 && %s && %s", i+firstThinStrip, cutName.Data(), timeSiCondition.Data()); tr->SetMarkerColor(kBlack); tr->Draw(varName, condition, "", drawEntries); // tr->Draw(varName, "", "", drawEntries); // tr->Draw(varName, condition, "", drawEntries); // tAlphaCal->Draw(varName, "", "same"); cutName.Form("cutEnergy%d", i+firstThinStrip); currCut = (TCutG*)fCutsTritium->Get(cutName); currCut->Draw("same"); c4->Update(); }//*/ return; ///////////////////////////////////////////////////////////////////// // c5 TCanvas *c5 = new TCanvas("c5", "PID plot from CsI filtered for time", 1000, 1000); c5->Divide(4,4); TCutG *currCutTritium; TString cutNameTritium; TString cutHe("(cutHe0"); TString cutNameHe; TFile *fCutsHelium = new TFile("cutsDeltaEhelium.root"); TCutG *cutsHe[14]; for (Int_t i = 0; i<14; i++) { cutNameHe.Form("cutHe%d", i); cutsHe[i] = (TCutG*)fCutsHelium->Get(cutNameHe); cutName.Form(" || %s", cutNameHe.Data()); if (i>0) cutHe.Append(cutName); } cutHe.Append(")"); cout << endl << endl << cutHe << endl; Int_t numberOfHe[16]; for (Int_t i = 0; i < 16; i++) { c5->cd(i+1); cutName.Form("cTime%d", i); currCut = (TCutG*)fCutsTime->Get(cutName); cutNameTritium.Form("cutEnergy%d", i); currCutTritium = (TCutG*)fCutsTritium->Get(cutNameTritium); varName.Form("SQRXE:NeEvent.CsI_R[%d]", i); condition.Form("NeEvent.CsI_R[%d]<3500" "&& SQRXEsum<25 && SQRXEsum>1 && SQRXmult==1" "&& trigger==3 && %s && %s", i, cutName.Data(), timeSiCondition.Data()); tr->SetMarkerColor(kBlack); tr->SetMarkerStyle(20); tr->SetMarkerSize(.4); tr->Draw(varName, condition, "", drawEntries/100); // tr->Draw(varName, "", "", drawEntries); // tr->Draw(varName, condition, "", drawEntries); // tAlphaCal->Draw(varName, "", "same"); // cutName.Form("cutEnergy%d", i); // currCut = (TCutG*)fCutsTritium->Get(cutName); currCutTritium->Draw("same"); c5->Update(); condition.Form("NeEvent.CsI_R[%d]<3500" "&& SQRXEsum<25 && SQRXEsum>1 && SQRXmult==1" "&& trigger==3 && %s && %s && %s && %s", i, cutName.Data(), timeSiCondition.Data(), cutNameTritium.Data(), cutHe.Data()); tr->SetMarkerColor(kRed); tr->SetMarkerStyle(20); tr->SetMarkerSize(1); numberOfHe[i] = tr->Draw(varName, condition, "same", drawEntries); cout << "CsI number " << i << ": " << numberOfHe[i] << " events" << endl; c5->Update(); } cout << endl << endl; for (Int_t i = 0; i < 16; i++) { cout << "CsI number " << i << ": " << numberOfHe[i] << " events" << endl; } return; ///////////////////////////////////////////////////////////////////// // c6 TCanvas *c6 = new TCanvas("c6", "1 mm Y: 8-15 - target locus", 1600, 800); c6->Divide(4,2); TString cTarget("xt>-10. && xt<10. && yt>-15. && yt<15."); c6->cd(1); tr->Draw("SQ20E[0]:SQ20E[0]+SQLYEsum>>(200,0,5,200,0,5)", "", "", 100); for (Int_t i = 0; i < 8; i++) { c6->cd(i+1); varName.Form("SQ20E[%d]:SQ20E[%d]+SQLYEsum", i+firstThinStrip, i+firstThinStrip); condition.Form("SQ20E[%d]>1.2 && SQ20E[%d]<5.5 && SQLYEsum>1.1 && SQLYEsum<30 && SQLYE[0]<1. && SQLYE[15]<1.", i+firstThinStrip, i+firstThinStrip); tr->Draw(varName, condition, "col", drawEntries); c6->Update(); condition.Form("SQ20E[%d]>1.2 && SQ20E[%d]<5.5 && SQLYEsum>1.1 && SQLYEsum<30 && SQLYE[0]<1. && SQLYE[15]<1. && %s", i+firstThinStrip, i+firstThinStrip, cTarget.Data()); tr->SetMarkerColor(kRed); tr->SetMarkerStyle(20); tr->SetMarkerSize(.5); tr->Draw(varName, condition, "same", drawEntries); c6->Update(); } ///////////////////////////////////////////////////////////////////// // c7 TCanvas *c7 = new TCanvas("c7", "1 mm Y: 8-15", 1600, 800); c7->Divide(4,2); TString cStripsLow("SQLXE[0]<1. && SQLXE[1]<1. && SQLXE[2]<1. && SQLXE[3]<1. && SQLXE[4]<1. && SQLXE[5]<1. && SQLXE[6]<1. && SQLXE[7]<1. && SQLXE[8]<1. && SQLXE[9]<1. && SQLXE[10]<1."); TString cStripsHigh("SQLXE[31]<1. && SQLXE[30]<1. && SQLXE[29]<1. && SQLXE[28]<1. && SQLXE[27]<1. && SQLXE[26]<1. && SQLXE[25]<1. && SQLXE[24]<1. && SQLXE[23]<1. && SQLXE[22]<1. && SQLXE[21]<1. && SQLXE[20]<1."); for (Int_t i = 0; i < 8; i++) { c7->cd(i+1); varName.Form("SQ20E[%d]:SQ20E[%d]+SQLXEsum", i+firstThinStrip, i+firstThinStrip); condition.Form("SQ20E[%d]>1.2 && SQ20E[%d]<5.5 " "&& SQLXEsum>1.1 && SQLXEsum<30 " "&& %s && %s" , i+firstThinStrip, i+firstThinStrip, cStripsLow.Data(), cStripsHigh.Data()); tr->Draw(varName, condition, "col", drawEntries); c7->Update(); } return; }