#include "TSystem.h" #include "TFile.h" #include "TTree.h" #include "TChain.h" #include "TCanvas.h" #include "TBox.h" #include "TCut.h" #include "TCutG.h" using std::cout; using std::endl; void figuresPAC(const Long64_t drawEntries = 100000000) { // 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; ///////////////////////////////////////////////////////////////////// // c3 /*TCanvas *c3 = new TCanvas("c3", "dE-E corrected", 1000, 1000); Int_t i = 1; varName.Form("SQ20Ecorr[%d]:SQ20Ecorr[%d]+SQLYEsum", i+firstThinStrip, i+firstThinStrip); varName.Form("SQ20Ecorr[%d]:SQ20Ecorr[%d]+SQLXEsum", i+firstThinStrip, i+firstThinStrip); condition.Form("SQ20Ecorr[%d]>1.2 && SQ20Ecorr[%d]<5 " "&& SQLYEsum>1.1 && SQLYEsum<30 " "&& SQLXEsum>1.1 && SQLXEsum<30 " "&& SQLYE[0]<1. && SQLYE[15]<1. " "&& SQLYmult==1 && SQLXmult==1" "&& trigger==3", i+firstThinStrip, i+firstThinStrip); tr->SetMarkerColor(kBlack); tr->Draw(varName, condition, "col", drawEntries); c3->Update();//*/ // return; ///////////////////////////////////////////////////////////////////// // c4 TCanvas *c4 = new TCanvas("c4", "PID plot from CsI filtered for time", 1600, 800); // c4->Divide(4,2); TFile *fCutsTime = new TFile("cutsTimeCsI.root"); TString cutName; TCutG *currCut; 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; // for (Int_t i = 0; i < 8; i++) { // c4->cd(i+1); Int_t i = 4; 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; return; ///////////////////////////////////////////////////////////////////// // c5 TCanvas *c5 = new TCanvas("c4", "MWPC", 1000, 1000); c5->Divide(2,2); c5->cd(4); condition.Form("TOF<185 && TOF>165 && trigger==3 && yt>-50 && xt>-50"); varName.Form("yt:xt>>hXYt(32, -40., 40., 32, -40., 40.)"); tr->Draw(varName, condition, "col", drawEntries); // targetBoarder->Draw(); c5->Update(); c5->cd(1); tr->Draw("y1p:x1p>>hXY1(32, -20., 20., 32, -20., 20.)", "TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && y1p>-50 && x1p>-50", "col", 1000000); cBL->Draw("same"); cBR->Draw("same"); c5->Update(); c5->cd(2); tr->Draw("y2p:x2p>>hXY2(32, -20., 20., 32, -20., 20.)", "TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && y2p>-50 && x2p>-50", "col", 1000000); c5->Update(); c5->cd(3); tr->Draw("dEbeam:TOF>>IDplot(200,,,200,,)", "TOF<200 && TOF>100 && dEbeam < 2500 && trigger==1", "col", 1000000); TBox *beamBox = new TBox(165, 1150, 185, 600); beamBox->SetFillStyle(0); beamBox->SetLineWidth(3); beamBox->SetLineColor(kRed); beamBox->Draw(); c5->Update(); ///////////////////////////////////////////////////////////////////// // 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; }