]>
Commit | Line | Data |
---|---|---|
fe646d50 | 1 | #include "AliRecoVsGeneCheck.h" |
2 | ||
3 | #include <Riostream.h> | |
4 | ||
5 | //____________________________________________________________________ | |
6 | ClassImp(AliRecoVsGeneCheck); | |
7 | ||
8 | //____________________________________________________________________ | |
9 | AliRecoVsGeneCheck::AliRecoVsGeneCheck() { | |
10 | ||
11 | fhVtzZRecoVsMC = new TH2F("vtx_z_reco_vs_mc","",100,-20,20,100,-20,20); | |
12 | ||
13 | fhVtxZRes = new TH1F("vtx_z_res","",100,0,0.05); | |
14 | fhVtxZResVsZ = new TH2F("vtx_z_res_vs_z","",100,-20,20,100,0,0.05); | |
15 | fhVtxZResVsNPart = new TH2F("vtx_z_res_vs_npart","",100,-0.5,99.5,100,0,0.05); | |
16 | ||
17 | fhVtxDzNorm = new TH1F("vtx_dz_norm","",100,-10,10); | |
18 | fhVtxDzNormVsZ = new TH2F("vtx_dz_norm_vs_z","",100,-20,20,100,-10,10); | |
19 | fhVtxDzNormVsNPart = new TH2F("vtx_dz_norm_vs_npart","",100,-0.5,99.5,100,-10,10); | |
20 | ||
21 | fhVtxZMC = new TH1F("vtx_z_mc","",100,-20,20); | |
22 | fhVtxZReco = new TH1F("vtx_z_reco","",100,-20,20); | |
23 | ||
24 | fhNPart = new TH1F("n_part","",100,-0.5,99.5); | |
25 | ||
26 | fhDPtVsPtVsEta = new TH3F("dpt_vs_pt_vs_eta","", 30,-1.5,1.5,30,0,3,120,-0.3,0.3); | |
27 | fhDEtaVsPtVsEta = new TH3F("deta_vs_pt_vs_eta","",30,-1.5,1.5,30,0,3,120,-0.3,0.3); | |
28 | ||
29 | fhVtxZMC ->Sumw2(); | |
30 | fhVtxZReco->Sumw2(); | |
31 | fhNPart ->Sumw2(); | |
32 | ||
33 | fhVtzZRecoVsMC ->SetXTitle("vertex z_{mc}"); | |
34 | fhVtzZRecoVsMC ->SetYTitle("vertex z_{reco}"); | |
35 | ||
36 | fhVtxZRes ->SetXTitle("vertex #sigma_{z_{reco}}"); | |
37 | fhVtxZResVsZ ->SetXTitle("vertex z_{mc}"); | |
38 | fhVtxZResVsZ ->SetYTitle("vertex #sigma_{z_{reco}}"); | |
39 | fhVtxZResVsNPart ->SetXTitle("n part"); | |
40 | fhVtxZResVsNPart ->SetYTitle("vertex #sigma_{z_{reco}}"); | |
41 | ||
42 | fhVtxDzNorm ->SetXTitle("vertex (z_{mc} - z_{reco}) / #sigma_{z_{reco}}"); | |
43 | fhVtxDzNormVsZ ->SetXTitle("vertex z_{mc}"); | |
44 | fhVtxDzNormVsZ ->SetYTitle("vertex (z_{mc} - z_{reco}) / #sigma_{z_{reco}}"); | |
45 | fhVtxDzNormVsNPart->SetXTitle("npart"); | |
46 | fhVtxDzNormVsNPart->SetYTitle("vertex (z_{mc} - z_{reco}) / #sigma_{z_{reco}}"); | |
47 | ||
48 | fhNPart ->SetXTitle("n part"); | |
49 | ||
50 | fhVtxZMC ->SetXTitle("vertex z_{mc}"); | |
51 | fhVtxZReco ->SetXTitle("vertex z_{reco}"); | |
52 | ||
53 | fhDPtVsPtVsEta ->SetXTitle("#eta"); | |
54 | fhDPtVsPtVsEta ->SetYTitle("p_{T} [GeV/c]"); | |
55 | fhDPtVsPtVsEta ->SetZTitle("#deltap_{T} [GeV/c]"); | |
56 | ||
57 | fhDEtaVsPtVsEta ->SetXTitle("#eta"); | |
58 | fhDEtaVsPtVsEta ->SetYTitle("p_{T} [GeV/c]"); | |
59 | fhDEtaVsPtVsEta ->SetZTitle("#delta#eta"); | |
60 | ||
61 | } | |
62 | ||
63 | //____________________________________________________________________ | |
64 | void | |
65 | AliRecoVsGeneCheck::Event(Double_t* vtx, Double_t* vtx_res, Double_t* mcvtx, Int_t n_part) { | |
66 | ||
67 | fhVtzZRecoVsMC ->Fill(mcvtx[2],vtx[2]); | |
68 | ||
69 | fhVtxZRes ->Fill(vtx_res[2]); | |
70 | fhVtxZResVsZ ->Fill(mcvtx[2], vtx_res[2]); | |
71 | fhVtxZResVsNPart ->Fill(n_part, vtx_res[2]); | |
72 | ||
73 | if (vtx_res[2]!=0) { | |
74 | Float_t dzNorm = (mcvtx[2] - vtx[2])/vtx_res[2]; | |
75 | ||
76 | fhVtxDzNorm ->Fill(dzNorm); | |
77 | fhVtxDzNormVsZ ->Fill(mcvtx[2], dzNorm); | |
78 | fhVtxDzNormVsNPart->Fill(n_part, dzNorm); | |
79 | ||
80 | } | |
81 | fhVtxZMC ->Fill(mcvtx[2]); | |
82 | fhVtxZReco ->Fill(vtx[2]); | |
83 | fhNPart ->Fill(n_part); | |
84 | } | |
85 | ||
86 | ||
87 | //____________________________________________________________________ | |
88 | void | |
89 | AliRecoVsGeneCheck::Track(AliESDtrack* esdTrack, TParticle* mcParticle) { | |
90 | ||
91 | Double_t p[3]; | |
92 | esdTrack->GetConstrainedPxPyPz(p); // ### TODO or GetInnerPxPyPy / GetOuterPxPyPy | |
93 | TVector3 vector(p); | |
94 | ||
95 | Float_t reco_p = esdTrack->GetP(); | |
96 | Float_t reco_theta = vector.Theta(); | |
97 | // Float_t reco_phi = | |
98 | Float_t reco_eta = -TMath::Log(TMath::Tan(reco_theta/2.)); | |
99 | Float_t reco_pt = reco_p*TMath::Sin(reco_theta); | |
100 | ||
101 | Float_t mc_eta = mcParticle->Eta(); | |
102 | Float_t mc_pt = mcParticle->Pt(); | |
103 | ||
104 | fhDPtVsPtVsEta->Fill(mc_eta, mc_pt, mc_pt - reco_pt); | |
105 | ||
106 | fhDEtaVsPtVsEta->Fill(mc_eta, mc_pt, mc_eta - reco_eta); | |
107 | ||
108 | } | |
109 | ||
110 | //____________________________________________________________________ | |
111 | void | |
112 | AliRecoVsGeneCheck::SaveHistograms(Char_t* dir) { | |
113 | ||
114 | gDirectory->mkdir(dir); | |
115 | gDirectory->cd(dir); | |
116 | ||
117 | gDirectory->mkdir("event"); | |
118 | gDirectory->cd("event"); | |
119 | ||
120 | fhVtzZRecoVsMC ->Write(); | |
121 | fhVtxZRes ->Write(); | |
122 | fhVtxZResVsZ ->Write(); | |
123 | fhVtxZResVsNPart ->Write(); | |
124 | fhVtxDzNorm ->Write(); | |
125 | fhVtxDzNormVsZ ->Write(); | |
126 | fhVtxDzNormVsNPart ->Write(); | |
127 | fhVtxZMC ->Write(); | |
128 | fhVtxZReco ->Write(); | |
129 | fhNPart ->Write(); | |
130 | ||
131 | gDirectory->cd("../"); | |
132 | ||
133 | ||
134 | gDirectory->mkdir("track"); | |
135 | gDirectory->cd("track"); | |
136 | ||
137 | fhDPtVsPtVsEta ->Write(); | |
138 | fhDEtaVsPtVsEta ->Write(); | |
139 | ||
140 | gDirectory->cd("../"); | |
141 | ||
142 | gDirectory->cd("../"); | |
143 | } |