Commit 7df3a329 authored by Vratislav Chudoba's avatar Vratislav Chudoba

Macros used for analysis added.

parent 8762aea3
#include "TSystem.h"
#include "TFile.h"
#include "TTree.h"
#include "../src/TNeEvent.h"
#include "../../AculUtils/TELoss/TELoss.h"
using std::cout;
using std::endl;
void fillTree(Int_t nofile = 0, const Int_t noevents = 0) {
TString inFile;
inFile.Form("~/data/exp1804/h5_14_%02d.root", nofile);
TString outFile;
outFile.Form("~/data/exp1804/h5_14_%02d_calib.root", nofile);
cout << "Input file: " << inFile << endl;
cout << "Output file: " << outFile << endl;
TFile *fr = new TFile(inFile);
TTree *tr = (TTree*)fr->Get("AnalysisxTree");
TNeEvent *revent = new TNeEvent();
tr->SetBranchAddress("NeEvent.", &revent);
TFile *fw = new TFile(outFile, "RECREATE");
TTree *tw = new TTree("cal", "Calibrated information");
Float_t SQ20E[16];
Float_t SQ20Ecorr[16];
Float_t SQ20Esum;
Float_t SQLXE[32];
Float_t SQLXEsum;
Float_t SQLYE[16];
Float_t SQLYEsum;
Int_t SQLXmult;
Int_t SQLYmult;
Int_t SQ20EcorrMult;
Float_t SQRXE[32];
Float_t SQRXEsum;
Int_t SQRXmult;
Float_t TOF, dEbeam;
Float_t x1p, y1p, x2p, y2p, xt, yt;
tw->Branch("SQ20E",SQ20E,"SQ20E[16]/F");
tw->Branch("SQ20Ecorr",SQ20Ecorr,"SQ20Ecorr[16]/F");
tw->Branch("SQ20Esum",&SQ20Esum,"SQ20Esum/F");
tw->Branch("SQLXE",SQLXE,"SQLXE[32]/F");
tw->Branch("SQLXEsum",&SQLXEsum,"SQLXE/F");
tw->Branch("SQLYE",SQLYE,"SQLYE[16]/F");
tw->Branch("SQLYEsum",&SQLYEsum,"SQLYEsum/F");
tw->Branch("SQLXmult",&SQLXmult,"SQLXmult/I");
tw->Branch("SQLYmult",&SQLYmult,"SQLYmult/I");
tw->Branch("SQ20EcorrMult",&SQ20EcorrMult,"SQ20EcorrMult/I");
tw->Branch("SQRXE",SQRXE,"SQRXE[32]/F");
tw->Branch("SQRXEsum",&SQRXEsum,"SQRXE/F");
tw->Branch("SQRXmult",&SQRXmult,"SQRXmult/I");
tw->Branch("TOF", &TOF, "TOF/F");
tw->Branch("dEbeam", &dEbeam, "dEbeam/F");
tw->Branch("x1p", &x1p, "x1p/F");
tw->Branch("y1p", &y1p, "y1p/F");
tw->Branch("x2p", &x2p, "x2p/F");
tw->Branch("y2p", &y2p, "y2p/F");
tw->Branch("xt", &xt, "xt/F");
tw->Branch("yt", &yt, "yt/F");
Long64_t nevents;
if (noevents == 0) nevents = tr->GetEntries();
else nevents = noevents;
if (nevents > tr->GetEntries()) nevents = tr->GetEntries();
// TNeDet16 *pSQX_L_EC = new TNeDet16("SQX_L_EC");
// TNeDet16 pSQX_L_EC("../SQX_L_EC");
TNeDet16 pSQX_L_EC("./SQX_L");
pSQX_L_EC.ReadData();
TNeDet16 pSQX_L_TC("./SQX_L_time");
pSQX_L_TC.ReadData();
TNeDet16 pSQY_L_EC("./SQY_L");
pSQY_L_EC.ReadData();
TNeDet16 pSQX_R_EC("../SQX_R_EC");
pSQX_R_EC.ReadData();
TNeDet16 pSQ20_EC("./sq20_58");
pSQ20_EC.ReadData();
// for (Int_t i = 0; i < 32; i++) {
// cout << pSQX_L_EC.Energy(1, i) << endl;
// }
Float_t energy = 0;
cout << nevents << " entries will be treated." << endl;
// TFile fThickness("thicknessPreliminary.root", "OPEN");
TFile fThickness("thicknessFinal.root", "OPEN");
fr->cd();
TH2F *hThickness = new TH2F(*(TH2F*)fThickness.Get("hTh"));
hThickness->Draw("col");
// std::cout << std::setprecision(1) << std::fixed;
const Int_t kSQL_X_strips = 32;
const Int_t kSQL_Y_strips = 16;
const Int_t kSQL_20_strips = 16;
const Double_t kSQLY_energy_thr = 1.;
const Double_t kSQLX_energy_thr = 1.;
const Double_t kSQL20_energy_thr = 1.2;
const Double_t kSQ20_norm_thickness = 20.;
// for (Int_t yi = 0; yi < kSQL_Y_strips; yi++) {
// cout << "y bin: " << yi+1 << "\t\t";
// for (Int_t xi = 0; xi < kSQL_X_strips; xi++) {
// cout << hThickness->GetBinContent(xi+1, yi+1) << "\t";
// if (xi == kSQL_X_strips-1) cout << endl;
// }
// }
fw->cd();
TELoss fAlphaSi;
fAlphaSi.SetEL(1, 2.321); // density in g/cm3
fAlphaSi.AddEL(14., 28.086, 1); //Z, mass
// mSi.SetZP(1., 1.); //protons
fAlphaSi.SetZP(2., 3.); //3He, Z, A
fAlphaSi.SetEtab(100000, 100.); // ?, MeV calculate ranges
fAlphaSi.SetDeltaEtab(300);
//////////////////////////////////
//event processing
//////////////////////////////////
for (Int_t eventNo = 0; eventNo < nevents; eventNo++) {
tr->GetEvent(eventNo);
// cout << revent->SQX_L[0] << endl;
// SQLXE[0] = revent->SQX_L[0];
SQ20Esum = 0.;
SQLXEsum = 0.;
SQLYEsum = 0.;
SQRXEsum = 0.;
SQRXmult = 0;
SQLXmult = 0;
SQLYmult = 0;
SQ20EcorrMult = 0;
for (Int_t i = 0; i < 32; i++) {
// cout << pSQX_L_EC.Energy(1, i) << endl;
SQLXE[i] = 0;
SQRXE[i] = 0;
energy = pSQX_L_EC.Energy(revent->SQX_L[i], i);
// cout << energy << "\t" << pSQX_L_EC.a[i][0] << "\t" << pSQX_L_EC.a[i][1] << "\t" << pSQX_L_EC.a[i][2] << endl;
// cout << energy << endl;
// if (i == 5 && i == 6) continue;
if (energy > kSQLX_energy_thr) {
SQLXE[i] = energy;
SQLXEsum += SQLXE[i];
SQLXmult++;
}
energy = pSQX_R_EC.Energy(revent->SQX_R[i], i);
if (energy > 1.0) {
SQRXE[i] = energy;
SQRXEsum += SQRXE[i];
SQRXmult++;
}
}
for (Int_t i = 0; i < 16; i++) {
// cout << pSQX_L_EC.Energy(1, i) << endl;
SQLYE[i] = 0.;
SQ20E[i] = 0.;
SQ20Ecorr[i] = 0.;
// SQRXE[i] = 0;
energy = pSQ20_EC.Energy(revent->SQ20[i], i);
// if (energy > 1.) {
SQ20E[i] = energy;
SQ20Esum += SQ20E[i];
// cout << energy << endl;
// cout << i << "\t" << energy << "\t" << pSQ20_EC.a[i][0] << "\t" << pSQ20_EC.a[i][1] << "\t" << pSQ20_EC.a[i][2] << endl;
// }
if (i==0) continue;
energy = pSQY_L_EC.Energy(revent->SQY_L[i], i);
// cout << energy << "\t" << pSQY_L_EC.a[i][0] << "\t" << pSQY_L_EC.a[i][1] << "\t" << pSQY_L_EC.a[i][2] << endl;
// cout << energy << endl;
if (energy > kSQLY_energy_thr) {
SQLYE[i] = energy;
SQLYEsum += SQLYE[i];
SQLYmult++;
}
// energy = pSQX_R_EC.Energy(revent->SQX_R[i], i);
//
// if (energy > 1.0) {
// SQRXE[i] = energy;
// SQRXEsum += SQRXE[i];
// SQRXmult++;
// }
}//for 16
// cout << endl;
///////////////////////////////////////////////
//correction for thickness inhomogeneity
///////////////////////////////////////////////
Double_t currThickness;
if (SQLXmult == 1 && SQLYmult == 1) {
for (Int_t yi = 0; yi < kSQL_Y_strips; yi++) {
// cout << "y bin: " << yi+1 << "\t\t";
if (SQLYE[yi]>kSQLY_energy_thr) {
for (Int_t xi = 0; xi < kSQL_X_strips; xi++) {
if (SQLXE[xi] > kSQLX_energy_thr) {
currThickness = hThickness->GetBinContent(xi+1, yi+1);
// if (currThickness<30.) {
// Int_t probableThinStrip = xi-2/2;
// SQ20Ecorr[0] =
// }
for (Int_t x20 = 0; x20 < kSQL_20_strips; x20++) {
if (SQ20E[x20] > kSQL20_energy_thr && currThickness<30.) {
// SQ20Ecorr[x20] = SQ20E[x20] + 1.;
// currThickness = kSQ20_norm_thickness + (currThickness - kSQ20_norm_thickness)*0.5;
SQ20Ecorr[x20] = (kSQ20_norm_thickness/currThickness)*SQ20E[x20];
SQ20EcorrMult++;
// cout << xi << "\t" << yi << "\t" << x20
// << "\t" << currThickness
// << "\t" << SQ20E[x20] << "\t" << SQ20Ecorr[x20] << "\t" << endl;
}
}//for*/
}
// cout << hThickness->GetBinContent(xi+1, yi+1) << "\t";
// if (xi == kSQL_X_strips-1) cout << endl;
}
}
}
}
///////////////////////////////////////////////
//beam diagnostics
///////////////////////////////////////////////
dEbeam = 0.;
TOF = 0.;
if (revent->tF5[0]>0 && revent->tF5[1]>0 && revent->tF5[2]>0 && revent->tF5[3]>0
&& revent->tF3[0]>0 && revent->tF3[1]>0 && revent->tF3[2]>0 && revent->tF3[3]>0
&& revent->F5[0]>0 && revent->F5[1]>0 && revent->F5[2]>0 && revent->F5[3]>0
// && ( (revent->tF5[0]+revent->tF5[1]+revent->tF5[2]+revent->tF5[3]) - (revent->tF3[0]+revent->tF3[1]+revent->tF3[2]+revent->tF3[3]) )/4.*0.125+89.165<200
// && ( (tF5[0]+tF5[1]+tF5[2]+tF5[3]) - (tF3[0]+tF3[1]+tF3[2]+tF3[3]) )/4.*0.125+89.165>100
// && (F5[0]+F5[1]+F5[2]+F5[3])/4. < 2500
) {
dEbeam = (revent->F5[0]+revent->F5[1]+revent->F5[2]+revent->F5[3])/4.;
TOF = ( (revent->tF5[0]+revent->tF5[1]+revent->tF5[2]+revent->tF5[3]) - (revent->tF3[0]+revent->tF3[1]+revent->tF3[2]+revent->tF3[3]) )/4.*0.125+89.165;
}
const Float_t l12 = 546.;
const Float_t lt = 270.;
x1p = -100.;
y1p = -100.;
x2p = -100.;
y2p = -100.;
xt = -100.;
yt = -100.;
if (revent->x1[0]<1000 && revent->y1[0]<1000 && revent->nx1==1 && revent->ny1==1) {
x1p = revent->x1[0]*1.25-20.;
y1p = revent->y1[0]*1.25-20.;
}
if (revent->x2[0]<1000 && revent->y2[0]<1000 && revent->nx2==1 && revent->ny2==1) {
x2p = revent->x2[0]*1.25-20.;
y2p = revent->y2[0]*1.25-20.;
}
if (x1p > -50. && y1p > -50. && x2p > -50. && y2p > -50.) {
xt = x1p - (x1p - x2p)*(l12/lt);
yt = y1p - (y1p - y2p)*(l12/lt);
}
// cout << endl;
tw->Fill();
// cout << eventNo << "\t" << eventNo%100 << endl;
if (eventNo%100000 == 0 && eventNo !=0) {
cout << eventNo << " events processed." << endl;
}
}
cout << nevents << " entries processed." << endl;
fw->cd();
tw->Write();
fw->Close();
}
void fillChain(const Int_t from = 0, const Int_t to = 9, const Int_t noevents = 0) {
for (Int_t i = from; i <= to; i++) {
fillTree(i, noevents);
}
}
//void openChain(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");
TChain *trCal = new TChain("cal");
// trCal->Add("~/data/exp1804/h5_11_0?_calib.root");
trCal->Add("~/data/exp1804/h5_14_0?_calib.root");
tr->AddFriend(trCal);
TFile *fcal = new TFile("~/data/exp1804/calib/si_20_03.root");
}
#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 showBananas(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");
TChain *trCal = new TChain("cal");
// trCal->Add("~/data/exp1804/h5_11_0?_calib.root");
trCal->Add("~/data/exp1804/h5_14_0?_calib.root");
tr->AddFriend(trCal);
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 = 3;
/////////////////////////////////////////////////////////////////////
// c1
TCanvas *c1 = new TCanvas("c1", "1 mm Y: all", 1600, 800);
c1->Divide(4,2);
for (Int_t i = 0; i < 8; i++) {
c1->cd(i+1);
varName.Form("SQ20E[%d]:SQLYEsum", i+firstThinStrip);
varName.Form("SQ20E[%d]:SQ20E[%d]+SQLYEsum", i+firstThinStrip, i+firstThinStrip);
condition.Form("SQ20E[%d]>0 && SQ20E[%d]<14 && SQLYEsum>0. && SQLYEsum<120. && SQLYE[0]<1. && SQLYE[15]<1.", i+firstThinStrip, i+firstThinStrip);
tr->SetMarkerColor(kBlack);
tr->SetMarkerStyle(20);
tr->SetMarkerSize(0.1);
if (i<4)
tr->Draw(varName, condition, "", drawEntries);
if (i>3)
tr->Draw(varName, condition, "col", drawEntries);
// condition.Form("SQ20E[%d]>0 && SQ20E[%d]<14 && SQLYEsum>0. && SQLYEsum<120. && SQLYE[0]<1. && SQLYE[15]<1. && cBeamLeft", i+firstThinStrip, i+firstThinStrip);
// tr->SetMarkerColor(kRed);
// tr->SetMarkerSize(0.5);
//
// condition.Form("SQ20E[%d]>0 && SQ20E[%d]<14 && SQLYEsum>0. && SQLYEsum<120. && SQLYE[0]<1. && SQLYE[15]<1. && cBeamRight", i+firstThinStrip, i+firstThinStrip);
// tr->SetMarkerColor(kGreen);
// tr->SetMarkerSize(0.5);
c1->Update();
}
/////////////////////////////////////////////////////////////////////
// c2
TCanvas *c2 = new TCanvas("c2", "1 mm Y: 8-15 zoomed", 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("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->SetMarkerColor(kBlack);
tr->Draw(varName, condition, "col", drawEntries);
c2->Update();
}
Int_t stripNb;
return;
/////////////////////////////////////////////////////////////////////
// c3
TCanvas *c3 = new TCanvas("c3", "1 mm Y: double-bananas cuts", 1000, 1000);
stripNb = 7;
varName.Form("SQ20E[%d]:SQ20E[%d]+SQLYEsum", stripNb, stripNb);
condition.Form("SQ20E[%d]>1.2 && SQ20E[%d]<5.5 && SQLYEsum>1.1 && SQLYEsum<30 && SQLYE[0]<1. && SQLYE[15]<1.", stripNb, stripNb);
tr->SetMarkerColor(kBlack);
tr->Draw(varName, condition, "col", drawEntries);
c3->Update();
cUS->Draw("same");
cLS->Draw("same");
cMA->Draw("same");
c3->Update();
/////////////////////////////////////////////////////////////////////
// c4
TCanvas *c4 = new TCanvas("c5", "MWPC: different dE-E regions", 1000, 1000);
c4->Divide(2,2);
c4->cd(1);
tr->Draw("y1p:x1p>>hXY1dr(32, -20., 20., 32, -20., 20.)",
"TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && y1p>-50 && x1p>-50",
"col", 1000000);
c4->Update();
tr->SetMarkerStyle(20);
tr->SetMarkerSize(0.4);
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7MainAlpha");
tr->SetMarkerColor(kGreen);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7UpperShadow");
tr->SetMarkerColor(kRed);
tr->SetMarkerStyle(3);
tr->SetMarkerSize(1.7);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7LowerShadow");
tr->SetMarkerColor(kMagenta);
tr->SetMarkerStyle(20);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
c4->cd(2);
tr->Draw("y2p:x2p>>hXY2dr(32, -20., 20., 32, -20., 20.)",
"TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && y2p>-50 && x2p>-50",
"col", 1000000);
c4->Update();
c4->cd(4);
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50");
varName.Form("yt:xt>>hXYtDR(32, -40., 40., 32, -40., 40.)");
tr->Draw(varName, condition, "col", 100000);
TBox *targetBoarder = new TBox(-25., 20., 25., -20.);
targetBoarder->SetFillStyle(0);
targetBoarder->SetLineWidth(3);
targetBoarder->SetLineColor(kRed);
targetBoarder->Draw();
c4->Update();
tr->SetMarkerStyle(20);
tr->SetMarkerSize(0.4);
varName.Form("yt:xt");
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7MainAlpha");
tr->SetMarkerColor(kGreen);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7UpperShadow");
tr->SetMarkerColor(kRed);
tr->SetMarkerStyle(3);
tr->SetMarkerSize(1.7);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7LowerShadow");
tr->SetMarkerColor(kMagenta);
tr->SetMarkerStyle(20);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
/////////////////////////////////////////////////////////////////////
// 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;
}
#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 showBananas2(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");
TChain *trCal = new TChain("cal");
// trCal->Add("~/data/exp1804/h5_11_0?_calib.root");
trCal->Add("~/data/exp1804/h5_14_0?_calib.root");
tr->AddFriend(trCal);
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;
/////////////////////////////////////////////////////////////////////
// c1
/*TCanvas *c1 = new TCanvas("c1", "time issues", 1600, 800);
c1->Divide(4,2);
for (Int_t i = 0; i < 8; i++) {
c1->cd(i+1);
// varName.Form("SQ20E[%d]:SQLYEsum", i+firstThinStrip);
varName.Form("SQ20E[%d]:SQ20E[%d]+SQLYEsum", i+firstThinStrip, i+firstThinStrip);
condition.Form("SQ20E[%d]>0 && SQ20E[%d]<14 && SQLYEsum>0. && SQLYEsum<120. && SQLYE[0]<1. && SQLYE[15]<1.", i+firstThinStrip, i+firstThinStrip);
varName.Form("SQX_L[%d]:tSQX_L[%d]", i+firstThinStrip, i+firstThinStrip);
condition.Form("tSQX_L[%d]>0 && SQX_L[%d]>0", i+firstThinStrip, 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", "1 mm Y: 8-15 zoomed", 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("SQ20E[%d]:SQ20E[%d]+SQLYEsum", i+firstThinStrip, i+firstThinStrip);
condition.Form("SQ20E[%d]>1.2 && SQ20E[%d]<5 "
"&& SQLYEsum>1.1 && SQLYEsum<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);
// tr->Draw(varName, condition, "", drawEntries);
c2->Update();
}//for */
// return;
/////////////////////////////////////////////////////////////////////
// c3
TCanvas *c3 = new TCanvas("c3", "dE-E raw", 1600, 800);
c3->Divide(4,2);
for (Int_t i = 0; i < 8; i++) {
c3->cd(i+1);
// varName.Form("SQ20Ecorr[%d]:SQLYEsum", i+firstThinStrip);
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);
// tr->Draw(varName, condition, "", drawEntries);
c3->Update();
}
return;
/////////////////////////////////////////////////////////////////////
// c4
TCanvas *c4 = new TCanvas("c5", "MWPC: different dE-E regions", 1000, 1000);
c4->Divide(2,2);
c4->cd(1);
tr->Draw("y1p:x1p>>hXY1dr(32, -20., 20., 32, -20., 20.)",
"TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && y1p>-50 && x1p>-50",
"col", 1000000);
c4->Update();
tr->SetMarkerStyle(20);
tr->SetMarkerSize(0.4);
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7MainAlpha");
tr->SetMarkerColor(kGreen);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7UpperShadow");
tr->SetMarkerColor(kRed);
tr->SetMarkerStyle(3);
tr->SetMarkerSize(1.7);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7LowerShadow");
tr->SetMarkerColor(kMagenta);
tr->SetMarkerStyle(20);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
c4->cd(2);
tr->Draw("y2p:x2p>>hXY2dr(32, -20., 20., 32, -20., 20.)",
"TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && y2p>-50 && x2p>-50",
"col", 1000000);
c4->Update();
c4->cd(4);
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50");
varName.Form("yt:xt>>hXYtDR(32, -40., 40., 32, -40., 40.)");
tr->Draw(varName, condition, "col", 100000);
TBox *targetBoarder = new TBox(-25., 20., 25., -20.);
targetBoarder->SetFillStyle(0);
targetBoarder->SetLineWidth(3);
targetBoarder->SetLineColor(kRed);
targetBoarder->Draw();
c4->Update();
tr->SetMarkerStyle(20);
tr->SetMarkerSize(0.4);
varName.Form("yt:xt");
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7MainAlpha");
tr->SetMarkerColor(kGreen);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7UpperShadow");
tr->SetMarkerColor(kRed);
tr->SetMarkerStyle(3);
tr->SetMarkerSize(1.7);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
condition.Form("TOF<185 && TOF>165 && dEbeam>600 && dEbeam<1150 && trigger==3 && yt>-50 && xt>-50 && c7LowerShadow");
tr->SetMarkerColor(kMagenta);
tr->SetMarkerStyle(20);
tr->SetMarkerSize(1.);
tr->Draw(varName, condition, "same", drawEntries);
c4->Update();
/////////////////////////////////////////////////////////////////////
// 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;
}
#include "TSystem.h"
#include "TFile.h"
#include "TTree.h"
#include "TChain.h"
#include "TCanvas.h"
using std::cout;
using std::endl;
void showBeam(const Long64_t drawEntries = 100000)
{
TChain *tr = new TChain("AnalysisxTree");
// tr->Add("~/data/exp1804/h5_14_0?.root");
// tr->Add("~/data/exp1804/output.root");
tr->Add("~/data/exp1804/h5_12.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/h5_14_0?_calib.root");
// tr->AddFriend(trCal);
// 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;
// TCanvas *c1 = new TCanvas("c1", "R: 0-7", 1600, 800);
// c1->Divide(4,2);
TCanvas *c1 = new TCanvas("beam", "beam info", 1200, 1200);
c1->Divide(2,2);
c1->cd(1);
// tr->Draw("trigger", "", "", drawEntries);
c1->cd(3);
// af5 = (NeEvent->F5[0]+NeEvent->F5[1]+NeEvent->F5[2]+NeEvent->F5[3]+4.*gRandom->Uniform())/4.
// tf5 = (NeEvent->tF5[0]+NeEvent->tF5[1]+NeEvent->tF5[2]+NeEvent->tF5[3]+4.*gRandom->Uniform())/4.;
// tf3 = (NeEvent->tF3[0]+NeEvent->tF3[1]+NeEvent->tF3[2]+NeEvent->tF3[3]+4.*gRandom->Uniform())/4.;
// ToF = (tf5 - tf3)*0.125+89.165;
// af5:TOF
// tr->Draw("(NeEvent->F5[0]+NeEvent->F5[1]+NeEvent->F5[2]+NeEvent->F5[3])/4.", "", "", drawEntries);
// tr->Draw("(F5[0]+F5[1]+F5[2]+F5[3])/4.", "", "", drawEntries);
// tr->Draw("(tF5[0]+tF5[1]+tF5[2]+tF5[3])/4.;", "", "", drawEntries);
// tr->Draw("( (tF5[0]+tF5[1]+tF5[2]+tF5[3]) - (tF3[0]+tF3[1]+tF3[2]+tF3[3]) )/4.*0.125+89.165;",
// "tF5[0]>0 && tF5[1]>0 && tF5[2]>0 && tF5[3]>0 && tF3[0]>0 && tF3[1]>0 && tF3[2]>0 && tF3[3]>0", "", drawEntries);
tr->Draw("(F5[0]+F5[1]+F5[2]+F5[3])/4.:( (tF5[0]+tF5[1]+tF5[2]+tF5[3]) - (tF3[0]+tF3[1]+tF3[2]+tF3[3]) )/4.*0.125+89.165;",
"tF5[0]>0 && tF5[1]>0 && tF5[2]>0 && tF5[3]>0 "
"&& tF3[0]>0 && tF3[1]>0 && tF3[2]>0 && tF3[3]>0 "
"&& F5[0]>0 && F5[1]>0 && F5[2]>0 && F5[3]>0"
"&& ( (tF5[0]+tF5[1]+tF5[2]+tF5[3]) - (tF3[0]+tF3[1]+tF3[2]+tF3[3]) )/4.*0.125+89.165<200 "
"&& ( (tF5[0]+tF5[1]+tF5[2]+tF5[3]) - (tF3[0]+tF3[1]+tF3[2]+tF3[3]) )/4.*0.125+89.165>100"
"&& (F5[0]+F5[1]+F5[2]+F5[3])/4. < 2500"
"&& trigger==1",
"col", drawEntries);
TH2F *hTOF = (TH2F*)gPad->GetPrimitive("htemp");
hTOF->SetStats(0);
hTOF->SetTitle("");
hTOF->SetXTitle("TOF (ns)");
hTOF->SetYTitle("dE (a.u.)");
hTOF->GetXaxis()->CenterTitle();
hTOF->GetXaxis()->SetTitleSize(0.06);
hTOF->GetXaxis()->SetTitleOffset(0.75);
hTOF->GetYaxis()->CenterTitle();
hTOF->GetYaxis()->SetTitleSize(0.06);
hTOF->GetYaxis()->SetTitleOffset(0.75);
c1->cd(2);
tr->Draw("(y1[0]-16)*1.25:(x1[0]-16.)*1.25>>hXY1(32, -20., 20., 32, -20., 20.)", "x1[1]<1000 && y1[1]<1000 && trigger==1 && nx1==1 && ny1==1", "col", drawEntries);
// tr->Draw("x2[0]", "x2[0]<1000 && nx2==1", "", drawEntries);
TH2F *h1 = (TH2F*)gPad->GetPrimitive("hXY1");
h1->SetStats(0);
h1->SetTitle("");
h1->SetXTitle("x1 (mm)");
h1->SetYTitle("y1 (mm)");
h1->GetXaxis()->CenterTitle();
h1->GetXaxis()->SetTitleSize(0.06);
h1->GetXaxis()->SetTitleOffset(0.75);
h1->GetYaxis()->CenterTitle();
h1->GetYaxis()->SetTitleSize(0.06);
h1->GetYaxis()->SetTitleOffset(0.75);
c1->cd(4);
tr->Draw("(y2[0]-16)*1.25:(x2[0]-16.)*1.25>>hXY2(32, -20., 20., 32, -20., 20.)", "x2[0]<1000 && y2[0]<1000 && trigger==1", "col", drawEntries);
TH2F *h2 = (TH2F*)gPad->GetPrimitive("hXY2");
h2->SetStats(0);
h2->SetTitle("");
h2->SetXTitle("x2 (mm)");
h2->SetYTitle("y2 (mm)");
h2->GetXaxis()->CenterTitle();
h2->GetXaxis()->SetTitleSize(0.06);
h2->GetXaxis()->SetTitleOffset(0.75);
h2->GetYaxis()->CenterTitle();
h2->GetYaxis()->SetTitleSize(0.06);
h2->GetYaxis()->SetTitleOffset(0.75);
TCanvas *c2 = new TCanvas("c2", "Bugs in MWPC", 1200, 1200);
c2->Divide(2,2);
c2->cd(1);
// tr->Draw("")
tr->Draw("x1[0]", "x2[0]<1000 && nx2==1", "", drawEntries);
tr->Draw("x1[0]", "nx1==0", "", drawEntries);
c2->cd(2);
tr->Draw("y1[0]", "ny1==0", "", drawEntries);
c2->cd(3);
tr->Draw("x2[0]", "nx2==0", "", drawEntries);
c2->cd(4);
tr->Draw("y2[0]", "ny2==0", "", drawEntries);
return;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment