]>
Commit | Line | Data |
---|---|---|
3bb122c7 | 1 | |
2 | #include <TROOT.h> | |
3 | #include <TSystem.h> | |
4 | #include <TInterpreter.h> | |
5 | #include <TChain.h> | |
6 | #include <TFile.h> | |
7 | #include <TList.h> | |
8 | #include <iostream> | |
9 | #include "TH2F.h" | |
10 | #include "AliFMDAnalysisTaskBackgroundCorrection.h" | |
11 | #include "AliAnalysisManager.h" | |
12 | #include "AliESDFMD.h" | |
13 | #include "AliESDEvent.h" | |
14 | #include "AliAODEvent.h" | |
15 | #include "AliAODHandler.h" | |
16 | #include "AliMCEventHandler.h" | |
17 | #include "AliStack.h" | |
18 | #include "AliESDVertex.h" | |
19 | #include "TMath.h" | |
20 | #include "AliFMDAnaParameters.h" | |
21 | #include "AliFMDGeometry.h" | |
22 | ||
23 | ClassImp(AliFMDAnalysisTaskBackgroundCorrection) | |
24 | ||
25 | ||
26 | AliFMDAnalysisTaskBackgroundCorrection::AliFMDAnalysisTaskBackgroundCorrection() | |
27 | : fDebug(0), | |
28 | fChain(0x0), | |
29 | fOutputList(0), | |
30 | fArray(0), | |
8dc823cc | 31 | fInputArray(0), |
c78bc12b | 32 | fVertexString(0x0), |
8dc823cc | 33 | fNevents(0) |
3bb122c7 | 34 | { |
35 | // Default constructor | |
36 | DefineInput (0, TList::Class()); | |
37 | DefineOutput(0,TList::Class()); | |
38 | } | |
8dc823cc | 39 | //_____________________________________________________________________ |
3bb122c7 | 40 | AliFMDAnalysisTaskBackgroundCorrection::AliFMDAnalysisTaskBackgroundCorrection(const char* name): |
41 | AliAnalysisTask(name, "Density"), | |
42 | fDebug(0), | |
43 | fChain(0x0), | |
44 | fOutputList(0), | |
45 | fArray(0), | |
8dc823cc | 46 | fInputArray(0), |
c78bc12b | 47 | fVertexString(0x0), |
8dc823cc | 48 | fNevents(0) |
3bb122c7 | 49 | { |
50 | DefineInput (0, TList::Class()); | |
51 | DefineOutput(0, TList::Class()); | |
52 | } | |
8dc823cc | 53 | //_____________________________________________________________________ |
3bb122c7 | 54 | void AliFMDAnalysisTaskBackgroundCorrection::CreateOutputObjects() |
55 | { | |
56 | AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance(); | |
57 | fOutputList = new TList(); | |
58 | ||
59 | fArray = new TObjArray(); | |
60 | fArray->SetName("FMD"); | |
61 | fArray->SetOwner(); | |
62 | ||
63 | TH2F* hMult = 0; | |
64 | ||
65 | Int_t nVtxbins = pars->GetNvtxBins(); | |
66 | ||
67 | for(Int_t det =1; det<=3;det++) | |
68 | { | |
69 | TObjArray* detArray = new TObjArray(); | |
70 | detArray->SetName(Form("FMD%d",det)); | |
71 | fArray->AddAtAndExpand(detArray,det); | |
72 | Int_t nRings = (det==1 ? 1 : 2); | |
73 | for(Int_t ring = 0;ring<nRings;ring++) | |
74 | { | |
75 | Char_t ringChar = (ring == 0 ? 'I' : 'O'); | |
76 | Int_t nSec = (ring == 0 ? 20 : 40); | |
77 | ||
78 | TObjArray* vtxArray = new TObjArray(); | |
79 | vtxArray->SetName(Form("FMD%d%c",det,ringChar)); | |
80 | detArray->AddAtAndExpand(vtxArray,ring); | |
81 | for(Int_t i = 0; i< nVtxbins; i++) { | |
82 | TH2F* hBg = pars->GetBackgroundCorrection(det, ringChar, i); | |
83 | hMult = new TH2F(Form("mult_FMD%d%c_vtxbin%d",det,ringChar,i),Form("mult_FMD%d%c_vtxbin%d",det,ringChar,i), | |
84 | hBg->GetNbinsX(), | |
85 | hBg->GetXaxis()->GetXmin(), | |
86 | hBg->GetXaxis()->GetXmax(), | |
87 | nSec, 0, 2*TMath::Pi()); | |
8dc823cc | 88 | hMult->Sumw2(); |
3bb122c7 | 89 | vtxArray->AddAtAndExpand(hMult,i); |
90 | ||
91 | } | |
92 | } | |
93 | } | |
8dc823cc | 94 | fNevents = new TArrayI(nVtxbins); |
3bb122c7 | 95 | fOutputList->Add(fArray); |
96 | ||
97 | ||
98 | } | |
8dc823cc | 99 | //_____________________________________________________________________ |
3bb122c7 | 100 | void AliFMDAnalysisTaskBackgroundCorrection::ConnectInputData(Option_t */*option*/) |
101 | { | |
102 | ||
103 | TList* list = (TList*)GetInputData(0); | |
104 | fInputArray = (TObjArray*)list->At(0); | |
8dc823cc | 105 | fVertexString = (TObjString*)list->At(1); |
3bb122c7 | 106 | } |
8dc823cc | 107 | //_____________________________________________________________________ |
3bb122c7 | 108 | void AliFMDAnalysisTaskBackgroundCorrection::Exec(Option_t */*option*/) |
109 | { | |
110 | AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance(); | |
111 | ||
8dc823cc | 112 | Int_t vtxbin = fVertexString->GetString().Atoi(); |
113 | fNevents->operator[](vtxbin)++; | |
3bb122c7 | 114 | |
3bb122c7 | 115 | for(UShort_t det=1;det<=3;det++) { |
116 | TObjArray* detInputArray = (TObjArray*)fInputArray->At(det); | |
117 | TObjArray* detArray = (TObjArray*)fArray->At(det); | |
118 | Int_t nRings = (det==1 ? 1 : 2); | |
119 | for (UShort_t ir = 0; ir < nRings; ir++) { | |
120 | Char_t ringChar = (ir == 0 ? 'I' : 'O'); | |
121 | TObjArray* vtxInputArray = (TObjArray*)detInputArray->At(ir); | |
122 | TObjArray* vtxArray = (TObjArray*)detArray->At(ir); | |
8dc823cc | 123 | TH2F* hMultTotal = (TH2F*)vtxArray->At(vtxbin); |
124 | TH2F* hMult = (TH2F*)vtxInputArray->At(vtxbin); | |
125 | TH2F* hBg = pars->GetBackgroundCorrection(det, ringChar, vtxbin); | |
126 | ||
127 | TH2F* hTmp = (TH2F*)hMult->Clone("hMult_from_event"); | |
128 | hTmp->Sumw2(); | |
129 | hTmp->Divide(hTmp,hBg,1,1,"B"); | |
130 | ||
131 | hMultTotal->Add(hTmp); | |
132 | ||
133 | ||
3bb122c7 | 134 | } |
135 | } | |
136 | ||
137 | PostData(0, fOutputList); | |
138 | ||
139 | } | |
8dc823cc | 140 | //_____________________________________________________________________ |
141 | void AliFMDAnalysisTaskBackgroundCorrection::Terminate(Option_t */*option*/) { | |
142 | ||
143 | AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance(); | |
144 | ||
145 | Int_t nVtxbins = pars->GetNvtxBins(); | |
146 | ||
147 | for(UShort_t det=1;det<=3;det++) { | |
148 | TObjArray* detArray = (TObjArray*)fArray->At(det); | |
149 | Int_t nRings = (det==1 ? 1 : 2); | |
150 | for (UShort_t ir = 0; ir < nRings; ir++) { | |
151 | TObjArray* vtxArray = (TObjArray*)detArray->At(ir); | |
152 | for(Int_t i =0; i<nVtxbins; i++) { | |
153 | TH2F* hMultTotal = (TH2F*)vtxArray->At(i); | |
154 | hMultTotal->Scale(1/(Float_t)fNevents->At(i)); | |
155 | } | |
156 | } | |
157 | } | |
3bb122c7 | 158 | |
8dc823cc | 159 | } |
160 | //_____________________________________________________________________ | |
161 | // | |
162 | // | |
163 | // EOF |