f73e058b45cda99a9d40b4508a5aadf8705d2e2a
[u/mrichter/AliRoot.git] / PWG3 / base / AliQuarkoniaAcceptance.cxx
1 /* $Id$ */
2
3 // Root 
4 #include "TAxis.h"
5 #include "TFile.h"
6 #include "TH2.h"
7 #include "TString.h"
8
9 // AliRoot includes
10 #include "AliQuarkoniaAcceptance.h"
11 #include "AliLog.h"
12
13
14
15 //_______________________________________________________________________
16 AliQuarkoniaAcceptance::AliQuarkoniaAcceptance(Int_t quarkoniaResonance, Int_t decayChannel):
17   fAcceptanceFileName("$ALICE_ROOT/PWG3/QuarkoniaAcceptance.root"),
18   fQuarkoniaResonance(quarkoniaResonance),
19   fDecayChannel(decayChannel),
20   fAcceptance(0x0)
21 {
22
23
24 }
25 //_______________________________________________________________________
26 AliQuarkoniaAcceptance::~AliQuarkoniaAcceptance()
27 {
28   delete fAcceptance; 
29 }
30
31 //_______________________________________________________________________
32 void AliQuarkoniaAcceptance::Init()
33 {
34   switch (fQuarkoniaResonance)  {  
35   case kJpsi:
36     SetTitle("Jpsi");
37     break;
38   case kPsiP:
39     SetTitle("PsiP");
40     break;
41   case kUpsilon:
42     SetTitle("Upsilon");
43     break;
44   case kUpsilonP:
45     SetTitle("UpsilonP");
46     break;
47   case kUpsilonPP:
48     SetTitle("UpsilonPP");
49     break;
50   case kOmega:
51     SetTitle("Omega");
52     break;
53   case kPhi:
54     SetTitle("Phi");
55     break;
56   }
57
58   switch ( fDecayChannel) {
59   case kDimuon:
60     SetName("Dimuon");
61     break;
62   case kDielectron:
63     SetName("Dielectron");
64     break;
65   }
66
67   if(!fAcceptance) delete fAcceptance; 
68
69   TFile acceptanceFile(fAcceptanceFileName);
70   if ( acceptanceFile.IsOpen() ) {
71     char histoname[30];
72     snprintf(histoname,30,"h%s%sAccep",GetTitle(),GetName());
73     fAcceptance = (TH2F*) acceptanceFile.Get(histoname);
74     if ( !fAcceptance ) {
75       AliError(Form("Acceptance data for quarkonia %s and channel %s not found", GetTitle(), GetName() ));
76     }
77     else {
78       fAcceptance->SetDirectory(0);
79     }
80     acceptanceFile.Close();
81   }
82   else {
83     AliError(Form("File %s not found",fAcceptanceFileName.Data()));
84   }
85 }
86 //_______________________________________________________________________  
87 TH2F*  AliQuarkoniaAcceptance::GetAcceptanceHisto() const
88 {
89   if (fAcceptance) return fAcceptance;
90   else {
91     AliError(Form("Acceptance data for quarkonia %s and channel %s not found",GetTitle(),GetName()));
92     return 0x0;
93   }
94 }
95 //_______________________________________________________________________  
96 void  AliQuarkoniaAcceptance::GetAcceptance(Float_t rap, Float_t pT, Double_t &accep, Double_t &error)
97 {
98   Int_t binx=0;
99   Int_t biny=0;
100
101   if (!fAcceptance) {
102     AliError(Form("Acceptance data for quarkonia %s and channel %s not found",GetTitle(),GetName()));
103   }
104   else {
105     if (   rap < (fAcceptance->GetXaxis())->GetXmin()  ||  
106            rap > (fAcceptance->GetXaxis())->GetXmax()  ||
107            pT  < (fAcceptance->GetYaxis())->GetXmin()  ||  
108            pT  > (fAcceptance->GetYaxis())->GetXmax()     ) {
109       AliInfo("Values out of range");
110       accep = 0.;
111       error = 0.;
112     }
113     else  { 
114       binx  = fAcceptance->GetXaxis()->FindBin(rap);  
115       biny  = fAcceptance->GetYaxis()->FindBin(pT);
116       accep = fAcceptance->GetBinContent(binx,biny);
117       error = fAcceptance->GetBinError(binx,biny);
118     }
119   }
120