Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 25 additions & 31 deletions Detectors/Upgrades/ALICE3/TRK/macros/test/CheckClusterSizeVsEta.C
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
#include <TStyle.h>

// ### required input file: CheckClusters.root, which is the output of CheckClusters.C macro
void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root")
void CheckClusterSizeVsEta(const std::string& strFileInput = "CheckClusters.root")
{
gStyle->SetOptStat(0);

TFile *fileInput = new TFile(strFileInput.c_str());
TTree *tree = (TTree *)fileInput->Get("ntc");
TFile* fileInput = new TFile(strFileInput.c_str());
TTree* tree = (TTree*)fileInput->Get("ntc");
std::cout << "Opened tree: " << tree->GetName() << ", entries = " << tree->GetEntries() << std::endl;

// set branch addresses
Expand Down Expand Up @@ -71,26 +71,24 @@ void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root
tree->SetBranchAddress("pt", &pt);

// Some QA histograms
TH1F *hPt = new TH1F("hPt", "p_{T};p_{T};Entries", 100, 0., 10.);
TH1F *hClusSize = new TH1F("hClusSize", "Cluster size;clusSize;Entries", 20, 0., 20.);
TH1F *hLayer = new TH1F("hLayer", "Layer;layer;Entries", 20, -0.5, 19.5);
TH1F *hDxGlob = new TH1F("hDxGlob", "clusGlobX - hitGlobX;#DeltaX [global];Entries", 200, -1., 1.);
TH1F *hDzGlob = new TH1F("hDzGlob", "clusGlobZ - hitGlobZ;#DeltaZ [global];Entries", 200, -1., 1.);
TH2F *hHitXY = new TH2F("hHitXY", "Hit global XY;hitGlobX;hitGlobY", 200, -20., 20., 200, -20., 20.);
TH2F *hClusVsHitX = new TH2F("hClusVsHitX", "clusGlobX vs hitGlobX;hitGlobX;clusGlobX", 200, -20., 20., 200, -20., 20.);
TH1F* hPt = new TH1F("hPt", "p_{T};p_{T};Entries", 100, 0., 10.);
TH1F* hClusSize = new TH1F("hClusSize", "Cluster size;clusSize;Entries", 20, 0., 20.);
TH1F* hLayer = new TH1F("hLayer", "Layer;layer;Entries", 20, -0.5, 19.5);
TH1F* hDxGlob = new TH1F("hDxGlob", "clusGlobX - hitGlobX;#DeltaX [global];Entries", 200, -1., 1.);
TH1F* hDzGlob = new TH1F("hDzGlob", "clusGlobZ - hitGlobZ;#DeltaZ [global];Entries", 200, -1., 1.);
TH2F* hHitXY = new TH2F("hHitXY", "Hit global XY;hitGlobX;hitGlobY", 200, -20., 20., 200, -20., 20.);
TH2F* hClusVsHitX = new TH2F("hClusVsHitX", "clusGlobX vs hitGlobX;hitGlobX;clusGlobX", 200, -20., 20., 200, -20., 20.);

// histograms for cluster size vs eta for each barrel layer:
const int nLayers = 11;
TH2F *hClustSizePerLayerVsEta[nLayers];
for (int i = 0; i < nLayers; i++)
{
TH2F* hClustSizePerLayerVsEta[nLayers];
for (int i = 0; i < nLayers; i++) {
hClustSizePerLayerVsEta[i] = new TH2F(Form("hClustSizePerLayerVsEta_Lay%d", i), Form("Cluster size vs eta for layer %d;#eta;Cluster size", i), 200, -5, 5, 101, -0.5, 100.5);
}

// Loop over entries
const Long64_t nEntries = tree->GetEntries();
for (Long64_t i = 0; i < nEntries; ++i)
{
for (Long64_t i = 0; i < nEntries; ++i) {
tree->GetEntry(i);

// Fill QA histograms
Expand All @@ -117,14 +115,13 @@ void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root
hClustSizePerLayerVsEta[(int)layer]->Fill(clustEta, clusSize);

// progress print
if ((i + 1) % 200000 == 0)
{
if ((i + 1) % 200000 == 0) {
std::cout << "Processed " << (i + 1) << " / " << nEntries << " entries" << std::endl;
}
}

// Save histograms to file
TFile *fout = TFile::Open("clusterSizes_vs_eta.root", "RECREATE");
TFile* fout = TFile::Open("clusterSizes_vs_eta.root", "RECREATE");
hPt->Write();
hClusSize->Write();
hLayer->Write();
Expand All @@ -134,7 +131,7 @@ void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root
hClusVsHitX->Write();

// draw some QA histograms
TCanvas *c1 = new TCanvas("canv_clusters_QA", "Clusters QA", 1200, 800);
TCanvas* c1 = new TCanvas("canv_clusters_QA", "Clusters QA", 1200, 800);
c1->Divide(2, 2);
c1->cd(1);
hPt->Draw();
Expand All @@ -149,10 +146,9 @@ void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root
kRed, kBlue + 1, kMagenta + 1,
kCyan + 1, kGray + 2, kRed, kBlue, kMagenta + 1, kCyan, kAzure + 1, kOrange - 9, kRed + 2, kBlue + 2, kMagenta + 2};

TCanvas *canv_clsSize_vs_eta[nLayers];
TProfile *profPerLayerVsEta[nLayers];
for (int i = 0; i < nLayers; i++)
{
TCanvas* canv_clsSize_vs_eta[nLayers];
TProfile* profPerLayerVsEta[nLayers];
for (int i = 0; i < nLayers; i++) {
canv_clsSize_vs_eta[i] = new TCanvas(Form("canv_clsSize_vs_eta_Lay%d", i), Form("Cluster size vs eta for layer %d", i), 800, 600);
hClustSizePerLayerVsEta[i]->Draw("COLZ");
gPad->SetLogz();
Expand All @@ -168,10 +164,9 @@ void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root
}

// ### canvas with profiles for 3 VD layers
TCanvas *canv_av_clsSize_vs_eta_VD_layers = new TCanvas("canv_clsSize_vs_eta_VD_layers", "Cluster size vs eta for VD layers", 800, 600);
TLegend *legLayersVD = new TLegend(0.3, 0.72, 0.65, 0.89);
for (int i = 0; i < 3; i++)
{
TCanvas* canv_av_clsSize_vs_eta_VD_layers = new TCanvas("canv_clsSize_vs_eta_VD_layers", "Cluster size vs eta for VD layers", 800, 600);
TLegend* legLayersVD = new TLegend(0.3, 0.72, 0.65, 0.89);
for (int i = 0; i < 3; i++) {
profPerLayerVsEta[i]->GetYaxis()->SetRangeUser(0., 60.);
profPerLayerVsEta[i]->DrawCopy(i == 0 ? "P" : "P same");
legLayersVD->AddEntry(profPerLayerVsEta[i], Form("VD layer %d", i), "P");
Expand All @@ -182,10 +177,9 @@ void CheckClusterSizeVsEta(const std::string &strFileInput = "CheckClusters.root
canv_av_clsSize_vs_eta_VD_layers->Write();

// ### canvas with profiles for MLOT layers
TCanvas *canv_av_clsSize_vs_eta_MLOT_layers = new TCanvas("canv_clsSize_vs_eta_MLOT_layers", "Cluster size vs eta for MLOT layers", 800, 600);
TLegend *legLayersMLOT = new TLegend(0.3, 0.52, 0.65, 0.89);
for (int i = 3; i < nLayers; i++)
{
TCanvas* canv_av_clsSize_vs_eta_MLOT_layers = new TCanvas("canv_clsSize_vs_eta_MLOT_layers", "Cluster size vs eta for MLOT layers", 800, 600);
TLegend* legLayersMLOT = new TLegend(0.3, 0.52, 0.65, 0.89);
for (int i = 3; i < nLayers; i++) {
profPerLayerVsEta[i]->GetYaxis()->SetRangeUser(0., 12.5);
profPerLayerVsEta[i]->GetXaxis()->SetRangeUser(-3.5, 3.5);
profPerLayerVsEta[i]->DrawCopy(i == 3 ? "P" : "P same");
Expand Down