1 #if !defined(__CINT__) || defined(__MAKECINT__)
9 #include <TPaveStats.h>
10 #include <TGraphErrors.h>
16 // Macro to plot the output of the ITS aligment task for SDD detector
17 // For the moment just plot quantities summed over modules
21 void PlotTrackToPointResidualsSDD(){
22 TFile *fil=new TFile("AnalysisResults.root");
23 TDirectoryFile* df=(TDirectoryFile*)fil->Get("ITSAlignQA");
24 TList* l=(TList*)df->Get("clistITSAlignQA");
25 TH2F* hSDDResidXvsX=0x0;
27 for(Int_t iMod=240; iMod<500; iMod++){
28 TString hname=Form("hSDDResidXvsX%d",iMod);
29 TH2F* h=(TH2F*)l->FindObject(hname);
31 if(hSDDResidXvsX==0x0){
32 hSDDResidXvsX=(TH2F*)h->Clone("hSDDResidXvsXAll");
34 hSDDResidXvsX->Add(h);
37 TString hname2=Form("hSDDResidX%d",iMod);
38 TH2F* h2=(TH2F*)l->FindObject(hname2);
41 hSDDResidX=(TH2F*)h2->Clone("hSDDResidXvsPtAll");
48 gStyle->SetPalette(1);
49 gStyle->SetOptTitle(0);
50 TCanvas* c1=new TCanvas("c1","",700,1000);
53 hSDDResidXvsX->Draw("colz");
54 hSDDResidXvsX->GetYaxis()->SetTitle("Track-to-point residual (cm)");
55 hSDDResidXvsX->GetXaxis()->SetTitle("X local (cm)");
56 TProfile* hpfx=hSDDResidXvsX->ProfileX();
57 hpfx->SetLineWidth(2);
60 Int_t midbin=hSDDResidXvsX->GetXaxis()->FindBin(0.);
61 TH1D* hleft=hSDDResidXvsX->ProjectionY("hleft",1,midbin-2);
62 TH1D* hright=hSDDResidXvsX->ProjectionY("hright",midbin+2,hSDDResidXvsX->GetNbinsX());
64 hleft->GetYaxis()->SetTitle("Track-to-point residual (cm)");
66 TPaveStats *st1=(TPaveStats*)hleft->GetListOfFunctions()->FindObject("stats");
69 hright->SetLineColor(2);
70 hright->Draw("sames");
72 TPaveStats *st2=(TPaveStats*)hright->GetListOfFunctions()->FindObject("stats");
78 TLatex *t2=new TLatex(0.14,0.7,"Left sides");
79 t2->SetTextSize(0.048);
81 TLatex *t3=new TLatex(0.14,0.5,"Right sides");
83 t3->SetTextSize(0.048);
88 TCanvas* c2=new TCanvas("c2","",700,1000);
91 hSDDResidX->GetXaxis()->SetRangeUser(0.,10.);
92 hSDDResidX->Draw("colz");
93 hSDDResidX->GetXaxis()->SetTitle("p_{t} (GeV/c)");
94 hSDDResidX->GetYaxis()->SetTitle("Track-to-point residual (cm)");
96 TGraphErrors* grms=new TGraphErrors(0);
97 for(Int_t iBin=1; iBin<=hSDDResidX->GetNbinsX(); iBin++){
98 TH1D* htmp=hSDDResidX->ProjectionY("htmp",iBin,iBin);
99 if(htmp->GetEntries()>10.){
100 Int_t npt=grms->GetN();
101 grms->SetPoint(npt,hSDDResidX->GetXaxis()->GetBinCenter(iBin),htmp->GetRMS());
102 grms->SetPointError(npt,0.5*hSDDResidX->GetXaxis()->GetBinWidth(iBin),htmp->GetRMSError());
105 grms->SetMarkerStyle(20);
106 grms->GetXaxis()->SetLimits(0.,10.);
108 grms->GetXaxis()->SetTitle("p_{t} (GeV/c)");
109 grms->GetYaxis()->SetTitle("RMS of Track-to-point residual (cm)");