BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
outFigs.C
Go to the documentation of this file.
1#include <Rtypes.h>
2#include <TCanvas.h>
3#include <TChain.h>
4#include <TClonesArray.h>
5#include <TH1.h>
6#include <TMath.h>
7#include <TStyle.h>
8#include <TVector3.h>
9
10R__ADD_INCLUDE_PATH($VMCWORKDIR)
11#include "macro/run/bmnloadlibs.C"
12
13using namespace std;
14using namespace TMath;
15
16void outFigs(TString in1 = "", TString in2 = "", TString in3 = "")
17{
18 bmnloadlibs(); // load libraries
19 gStyle->SetOptFit(111);
20
21 // Connect chains ...
22 const Int_t nFiles = 3;
23 const Int_t nVals = 3;
24 const Int_t nBranches = 2; // vertex, residuals
25 const Int_t nTitles = 3;
26 TString titlesVals[nTitles] = {"V_{p}", "Res_{x}", "Res_{y}"};
27 TString titlesFiles[nTitles] = {"Orig.", "Misalign.", "After align."};
28
29 TString files[nFiles] = {in1, in2, in3};
30 TString branches[nFiles] = {"BmnVertex", "BmnGemResiduals"};
31
32 TChain* chains[nFiles] = {NULL, NULL, NULL};
33 TClonesArray* arrays[nFiles][nBranches];
34 for (Int_t iFile = 0; iFile < nFiles; iFile++)
35 for (Int_t iBranch = 0; iBranch < nBranches; iBranch++)
36 arrays[iFile][iBranch] = NULL;
37
38 Int_t nEntries[nFiles] = {-1, -1, -1};
39 for (Int_t iFile = 0; iFile < nFiles; iFile++) {
40 chains[iFile] = new TChain("cbmsim");
41 chains[iFile]->Add(files[iFile].Data());
42 nEntries[iFile] = chains[iFile]->GetEntries();
43 }
44
45 // Int_t minEventsNum = 10000; // Min(nEntries[0], Min(nEntries[1], nEntries[2]));
46
47 TCanvas* canv = new TCanvas("c", "c", 800, 800);
48 canv->Divide(nFiles, nVals);
49 TH1F* histos[nVals][nFiles];
50 for (Int_t iVal = 0; iVal < nVals; iVal++)
51 for (Int_t iFile = 0; iFile < nFiles; iFile++)
52 histos[iVal][iFile] = new TH1F(Form("%s %s", titlesVals[iVal].Data(), titlesFiles[iFile].Data()),
53 Form("%s %s", titlesVals[iVal].Data(), titlesFiles[iFile].Data()), 200,
54 (iVal == 0) ? -10. : -1., (iVal == 0) ? +10. : +1.);
55
56 // Associate branches ...
57 for (Int_t iFile = 0; iFile < nFiles; iFile++)
58 for (Int_t iBranch = 0; iBranch < nBranches; iBranch++)
59 chains[iFile]->SetBranchAddress(branches[iBranch].Data(), &arrays[iFile][iBranch]);
60
61 for (Int_t iEntry = 0; iEntry < chains[0]->GetEntries(); iEntry++)
62 for (Int_t iFile = 0; iFile < nFiles; iFile++) {
63 chains[iFile]->GetEntry(iEntry);
64
65 CbmVertex* vertex = (CbmVertex*)arrays[iFile][0]->UncheckedAt(0);
66 canv->cd(iFile + 1);
67 histos[0][iFile]->Fill(vertex->GetZ());
68
69 for (Int_t iResid = 0; iResid < arrays[iFile][1]->GetEntriesFast(); iResid++) {
70 BmnResiduals* resid = (BmnResiduals*)arrays[iFile][1]->UncheckedAt(iResid);
71 Int_t iPad = iFile + 4;
72 canv->cd(iPad);
73 histos[1][iFile]->Fill(resid->GetResiduals().X());
74
75 iPad += 3;
76 canv->cd(iPad);
77 histos[2][iFile]->Fill(resid->GetResiduals().Y());
78 }
79 }
80
81 for (Int_t iVal = 0; iVal < nVals; iVal++) {
82 for (Int_t iFile = 0; iFile < nFiles; iFile++) {
83 canv->cd(iFile + nFiles * iVal + 1);
84 histos[iVal][iFile]->Draw();
85 // if (iVal != 0)
86 histos[iVal][iFile]->Fit("gaus", "SQww");
87 }
88 }
89
90 canv->SaveAs("output.pdf");
91 delete canv;
92}
int Int_t
#define R__ADD_INCLUDE_PATH(PATH)
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
CbmVertex.h.
Definition CbmVertex.h:21
Double_t GetZ() const
Definition CbmVertex.h:60
TVirtualPad * cd(Int_t subpadnumber=0) override
virtual Int_t Add(const char *name, Long64_t nentries=TTree::kMaxEntries)
Long64_t GetEntries() const override
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
void Draw(Option_t *option="") override
virtual Int_t Fill(const char *name, Double_t w)
Int_t GetEntriesFast() const
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
void SaveAs(const char *filename="", Option_t *option="") const override
void outFigs(TString in1="", TString in2="", TString in3="")
Definition outFigs.C:16
Definition json.hpp:4446