1 // "$MYDATA/gsi/gsi.root"
3 const char* fileName = "$MYDATA/gsi02/gsi02a.root";
4 const char* listName = "Cont_cloizide_DhcAna";
6 // const char* fileName = "dhctask_output_etamax1.root";
7 // const char* listName = "dhclist";
9 // From AliDhcTask.h...keep current!
10 const Int_t nPairAxes = 6;
11 const Int_t nEvtAxes = 3;
12 const Int_t nTrkAxes = 2;
13 //const Int_t nExtra = 3;
15 TString sCorrAxes[] = {"#Delta#eta", "assoc. p_{T}", "trig. p_{T}",
16 "Centrality", "#Delta#phi (rad)",
17 "z-vertex (cm)", "Charge Comb."};
18 TString sEvtAxes[] = {"z-vertex", "V0M Centrality (%)", "CL1 Centrality"};
19 TString sTrkAxes[] = {"phi", "eta"};
21 enum ePairHistAxes {kDeta, kPtAssc, kPtTrig, kCent, kDphi,
23 enum eEventHistAxes {kZvtxEvt, kCentV0M, kCentCL1};
24 enum eTrackHistAxes {kPhiTrk, kEtaTrk};
26 TObjArray* hists = new TObjArray();
28 //gROOT->LoadMacro("../../../common/ProjectionUtils.C+");
31 gStyle->SetOptTitle(0);
33 TFile* inFile = new TFile(fileName, "read");
34 TList* dhcList = inFile->Get(listName);
36 Error("","No List %s in %s", fileName, listName);
40 THnSparse* hs = dhcList->FindObject("fHS");
41 THnSparse* hm = dhcList->FindObject("fHM");
44 Error("","No hs in list %s", listName);
48 TH2F* hEvt = dhcList->FindObject("fHEvt");
49 TH2F* hTrk = dhcList->FindObject("fHTrk");
52 TH1D* heta = hTrk->ProjectionY();
55 TH1D* hzvtx = hEvt->ProjectionX("hzvtx", 1, 90);
57 TH1D* hcent = hEvt->ProjectionY("hcent");
59 // Correlation projections
61 // hs->GetAxis(kZvtx)->SetRangeUser(-1.9, 1.9);
62 // hm->GetAxis(kZvtx)->SetRangeUser(-1.9, 1.9);
64 // hs->GetAxis(kCent)->SetRangeUser(0, 4.99);
65 // hm->GetAxis(kCent)->SetRangeUser(0, 4.99);
67 TH2D* sig = hs->Projection(kDeta,kDphi); sig->SetName("sig");
68 TH2D* bkg = hm->Projection(kDeta,kDphi); sig->SetName("bkg");
69 sig->Sumw2(); bkg->Sumw2();
70 sig->Scale(1./sig->Integral());
71 bkg->Scale(1./bkg->Integral());
73 sig->GetYaxis()->SetRangeUser(-1.999, 1.999);
74 TH2D* hcz = hs->Projection(kZvtx, kCent);
75 hcz->SetName("zvtx_vs_cent");
80 TH1D *hsVar[nPairAxes], *hmVar[nPairAxes], *evtVar[nEvtAxes],
83 for (int i=0; i<nPairAxes; i++) {
85 hsVar[i] = hs->Projection(i);
86 hsVar[i]->SetFillColor(kRed-7);
88 hsVar[i]->SetTitle(Form("title;%s;same-evt. pairs", sCorrAxes[i].Data()));
89 hmVar[i] = hm->Projection(i);
90 hmVar[i]->SetFillColor(kAzure-9);
92 hmVar[i]->SetTitle(Form("title;%s;mixed-evt. pairs", sCorrAxes[i].Data()));
96 hzr = (TH1D*) hsVar[i]->Clone();
97 hzr->SetFillColor(kYellow);
98 hzr->Divide(hmVar[i]);
99 hzr->SetTitle("track count ratio;z-vertex (cm);same/mixed evt track multiplicity");
106 for (int i=0; i<nEvtAxes; i++) {
107 evtVar[i] = hEvt->Projection(i);
108 evtVar[i]->SetFillColor(kGray);
109 evtVar[i]->SetTitle(Form("title;%s;events", sEvtAxes[i].Data()));
110 hists->Add(evtVar[i]);
111 if (i==1) cout << evtVar[i]->Integral(1, 89) << endl;
113 for (int i=0; i<nTrkAxes; i++) {
114 trkVar[i] = hTrk->Projection(i);
115 trkVar[i]->SetTitle(Form("title;%s;tracks", sTrkAxes[i].Data()));
116 hists->Add(trkVar[i]);
122 for (int n=0; n<hists->GetEntries(); n++) {
123 TCanvas* c = new TCanvas(Form("c%d",n), Form("c%d",n),
124 10*n, 10*n, 700, 500);
125 TObject* obj = hists->At(n);
126 if (obj->InheritsFrom("TH2")) {
127 TH2* h2 = (TH2*) obj;
130 else if (obj->InheritsFrom("TH1")) {
133 h->SetFillStyle(1001); // solid
134 if(h->GetFillColor()==kNone) {
135 h->SetFillColor(kGreen-9);
138 h->Draw("histepsame");