1 #include "AliRecoVsGeneCheck.h"
5 //____________________________________________________________________
6 ClassImp(AliRecoVsGeneCheck);
8 //____________________________________________________________________
9 AliRecoVsGeneCheck::AliRecoVsGeneCheck() {
11 fhVtzZRecoVsMC = new TH2F("vtx_z_reco_vs_mc","",100,-20,20,100,-20,20);
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);
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);
21 fhVtxZMC = new TH1F("vtx_z_mc","",100,-20,20);
22 fhVtxZReco = new TH1F("vtx_z_reco","",100,-20,20);
24 fhNPart = new TH1F("n_part","",100,-0.5,99.5);
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);
33 fhVtzZRecoVsMC ->SetXTitle("vertex z_{mc}");
34 fhVtzZRecoVsMC ->SetYTitle("vertex z_{reco}");
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}}");
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}}");
48 fhNPart ->SetXTitle("n part");
50 fhVtxZMC ->SetXTitle("vertex z_{mc}");
51 fhVtxZReco ->SetXTitle("vertex z_{reco}");
53 fhDPtVsPtVsEta ->SetXTitle("#eta");
54 fhDPtVsPtVsEta ->SetYTitle("p_{T} [GeV/c]");
55 fhDPtVsPtVsEta ->SetZTitle("#deltap_{T} [GeV/c]");
57 fhDEtaVsPtVsEta ->SetXTitle("#eta");
58 fhDEtaVsPtVsEta ->SetYTitle("p_{T} [GeV/c]");
59 fhDEtaVsPtVsEta ->SetZTitle("#delta#eta");
63 //____________________________________________________________________
65 AliRecoVsGeneCheck::Event(Double_t* vtx, Double_t* vtx_res, Double_t* mcvtx, Int_t n_part) {
67 fhVtzZRecoVsMC ->Fill(mcvtx[2],vtx[2]);
69 fhVtxZRes ->Fill(vtx_res[2]);
70 fhVtxZResVsZ ->Fill(mcvtx[2], vtx_res[2]);
71 fhVtxZResVsNPart ->Fill(n_part, vtx_res[2]);
74 Float_t dzNorm = (mcvtx[2] - vtx[2])/vtx_res[2];
76 fhVtxDzNorm ->Fill(dzNorm);
77 fhVtxDzNormVsZ ->Fill(mcvtx[2], dzNorm);
78 fhVtxDzNormVsNPart->Fill(n_part, dzNorm);
81 fhVtxZMC ->Fill(mcvtx[2]);
82 fhVtxZReco ->Fill(vtx[2]);
83 fhNPart ->Fill(n_part);
87 //____________________________________________________________________
89 AliRecoVsGeneCheck::Track(AliESDtrack* esdTrack, TParticle* mcParticle) {
92 esdTrack->GetConstrainedPxPyPz(p); // ### TODO or GetInnerPxPyPy / GetOuterPxPyPy
95 Float_t reco_p = esdTrack->GetP();
96 Float_t reco_theta = vector.Theta();
98 Float_t reco_eta = -TMath::Log(TMath::Tan(reco_theta/2.));
99 Float_t reco_pt = reco_p*TMath::Sin(reco_theta);
101 Float_t mc_eta = mcParticle->Eta();
102 Float_t mc_pt = mcParticle->Pt();
104 fhDPtVsPtVsEta->Fill(mc_eta, mc_pt, mc_pt - reco_pt);
106 fhDEtaVsPtVsEta->Fill(mc_eta, mc_pt, mc_eta - reco_eta);
110 //____________________________________________________________________
112 AliRecoVsGeneCheck::SaveHistograms(Char_t* dir) {
114 gDirectory->mkdir(dir);
117 gDirectory->mkdir("event");
118 gDirectory->cd("event");
120 fhVtzZRecoVsMC ->Write();
122 fhVtxZResVsZ ->Write();
123 fhVtxZResVsNPart ->Write();
124 fhVtxDzNorm ->Write();
125 fhVtxDzNormVsZ ->Write();
126 fhVtxDzNormVsNPart ->Write();
128 fhVtxZReco ->Write();
131 gDirectory->cd("../");
134 gDirectory->mkdir("track");
135 gDirectory->cd("track");
137 fhDPtVsPtVsEta ->Write();
138 fhDEtaVsPtVsEta ->Write();
140 gDirectory->cd("../");
142 gDirectory->cd("../");