]>
Commit | Line | Data |
---|---|---|
ae982df3 | 1 | //******************************************************************** |
8c6a71ab | 2 | // Example (very naive for the moment) of the data analysis |
ae982df3 | 3 | // using the ESD classes |
0717295b | 4 | // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch |
ae982df3 | 5 | //******************************************************************** |
6 | ||
c630aafd | 7 | #if !defined( __CINT__) || defined(__MAKECINT__) |
ae982df3 | 8 | #include <Riostream.h> |
8b462fd8 | 9 | #include <TTree.h> |
ae982df3 | 10 | #include "TFile.h" |
c630aafd | 11 | #include "TH1F.h" |
ae982df3 | 12 | #include "TCanvas.h" |
0717295b | 13 | #include "TStyle.h" |
ae982df3 | 14 | #include "TStopwatch.h" |
15 | ||
86ad5fcb | 16 | #include "AliESDEvent.h" |
ae982df3 | 17 | #endif |
18 | ||
0717295b | 19 | extern TStyle *gStyle; |
20 | ||
21 | Int_t AliESDanalysis() { | |
22 | TStopwatch timer; | |
23 | ||
24 | gStyle->SetOptStat(111110); | |
25 | gStyle->SetOptFit(1); | |
26 | ||
27 | Double_t V0mass=0.497672, V0width=0.020, V0window=0.05; | |
28 | Double_t mmin=V0mass-V0window, mmax=V0mass+V0window; | |
29 | TH1F *hm =new TH1F("hm","K0s",40, mmin, mmax); | |
30 | hm->SetXTitle("Mass (GeV/c**2)"); hm->SetLineColor(2); | |
31 | TH1F *hp =new TH1F("hp","Momentum of the positive daughter",40, 0, 2); | |
32 | hp->SetXTitle("P (GeV/c)"); hp->SetLineColor(4); | |
c630aafd | 33 | |
0717295b | 34 | //****** File with the ESD |
ae982df3 | 35 | TFile *ef=TFile::Open("AliESDs.root"); |
0717295b | 36 | if (!ef || !ef->IsOpen()) {cerr<<"Can't AliESDs.root !\n"; return 1;} |
86ad5fcb | 37 | AliESDEvent* event = new AliESDEvent(); |
8b462fd8 | 38 | TTree* tree = (TTree*) ef->Get("esdTree"); |
39 | if (!tree) {cerr<<"no ESD tree found\n"; return 1;}; | |
86ad5fcb | 40 | event->ReadFromTree(tree); |
ae982df3 | 41 | |
0717295b | 42 | Int_t n=0; |
ae982df3 | 43 | |
0717295b | 44 | //******* The loop over events |
8b462fd8 | 45 | while (tree->GetEvent(n)) { |
0717295b | 46 | cout<<endl<<"Processing event number : "<<n++<<endl; |
c630aafd | 47 | |
ae982df3 | 48 | Int_t ntrk=event->GetNumberOfTracks(); |
0717295b | 49 | cout<<"Number of ESD tracks : "<<ntrk<<endl; |
50 | Int_t nv0=event->GetNumberOfV0s(); | |
51 | cout<<"Number of ESD V0s : "<<nv0<<endl; | |
52 | Int_t ncas=event->GetNumberOfCascades(); | |
53 | cout<<"Number of ESD cascades : "<<ncas<<endl; | |
c630aafd | 54 | |
0717295b | 55 | //****** The loop over tracks |
56 | Int_t nk=0; | |
ae982df3 | 57 | while (ntrk--) { |
0717295b | 58 | AliESDtrack *track=event->GetTrack(ntrk); |
59 | UInt_t status=track->GetStatus(); | |
60 | ||
61 | //select only tracks with the "combined PID" | |
62 | if ((status&AliESDtrack::kESDpid)==0) continue; | |
63 | ||
64 | Double_t w[10]; track->GetESDpid(w); | |
65 | //count only "Kaon-like" tracks | |
66 | if (w[3]>w[4] && w[3]>w[2] && w[3]>w[1] && w[3]>w[0]) nk++; | |
67 | } | |
68 | cout<<"Number of \"Kaon-like\" tracks : "<<nk<<endl; | |
69 | ||
70 | //****** The loop over V0s | |
71 | while (nv0--) { | |
72 | AliESDv0 *v0=event->GetV0(nv0); | |
73 | v0->ChangeMassHypothesis(310); // K0s | |
74 | Double_t mass=v0->GetEffMass(); | |
75 | hm->Fill(mass); | |
76 | ||
77 | Int_t pidx=v0->GetPindex(); // now let's get an access | |
78 | AliESDtrack *track=event->GetTrack(pidx); // to the positive daughter | |
79 | Double_t p=track->GetP(); | |
80 | hp->Fill(p); | |
81 | } | |
82 | ||
83 | //****** The loop over cascades | |
84 | while (ncas--) { | |
85 | AliESDcascade *cas=event->GetCascade(ncas); | |
86 | Double_t q; //"quality" of the associated Lambda | |
87 | cas->ChangeMassHypothesis(q,3312); // Xi- | |
88 | // Here you do something with your Xis | |
89 | // ... | |
90 | // You can get the access to the daughters | |
91 | } | |
92 | ||
ae982df3 | 93 | } |
c630aafd | 94 | |
8b462fd8 | 95 | delete event; |
96 | ef->Close(); | |
97 | ||
ae982df3 | 98 | timer.Stop(); timer.Print(); |
99 | ||
100 | TCanvas *c1=new TCanvas("c1","",0,0,600,1200); | |
0717295b | 101 | c1->Divide(1,2); |
ae982df3 | 102 | |
103 | c1->cd(1); | |
0717295b | 104 | hm->Fit("gaus","","",V0mass-V0width,V0mass+V0width); |
c630aafd | 105 | |
ae982df3 | 106 | c1->cd(2); |
0717295b | 107 | hp->Fit("expo","","",0.3,2); |
108 | ||
109 | return 0; | |
ae982df3 | 110 | } |