]>
Commit | Line | Data |
---|---|---|
39e2b057 | 1 | // ***************************************************************************** |
2 | // * Task for corrections to output from AliAnalysisTaskFragmentationFunctions * | |
3 | // **************************************************************************** | |
4 | ||
5 | #ifndef ALIFRAGMENTATIONFUNCTIONCORRECTIONS_H | |
6 | #define ALIFRAGMENTATIONFUNCTIONCORRECTIONS_H | |
7 | ||
8 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
9 | * See cxx source for full Copyright notice */ | |
10 | ||
11 | /* $Id$ */ | |
12 | ||
13 | #include "TObject.h" | |
14 | ||
15 | class ThnSparse; | |
16 | ||
17 | class AliFragmentationFunctionCorrections : public TObject { | |
18 | ||
19 | public: | |
20 | ||
21 | //---------------------------------------- | |
22 | class AliFragFuncCorrHistos : public TObject | |
23 | { | |
24 | ||
25 | public: | |
26 | ||
27 | AliFragFuncCorrHistos(); | |
28 | AliFragFuncCorrHistos(const AliFragFuncCorrHistos& copy); | |
29 | AliFragFuncCorrHistos& operator=(const AliFragFuncCorrHistos &o); | |
30 | virtual ~AliFragFuncCorrHistos(); | |
31 | AliFragFuncCorrHistos(const char* label,Int_t arraySize); | |
32 | void AddCorrHistos(Int_t slice,TH1F* histPt=0,TH1F* histZ=0,TH1F* histXi=0); | |
33 | void ReplaceCorrHistos(Int_t slice,TH1F* histPt=0,TH1F* histZ=0,TH1F* histXi=0); | |
34 | ||
35 | TH1F* GetTrackPt(const Int_t slice); | |
36 | TH1F* GetZ(const Int_t slice); | |
37 | TH1F* GetXi(const Int_t slice); | |
38 | ||
39 | TString GetLabel() { return fCorrLabel; } | |
40 | ||
41 | private: | |
42 | ||
43 | Int_t fArraySize; | |
44 | ||
45 | TH1F** fh1CorrFFTrackPt; //! corrected FF histos | |
46 | TH1F** fh1CorrFFZ; //! corrected FF histos | |
47 | TH1F** fh1CorrFFXi; //! corrected FF histos | |
48 | ||
49 | TString fCorrLabel; //! correction label | |
50 | ||
51 | ClassDef(AliFragFuncCorrHistos, 1); | |
52 | }; | |
53 | ||
54 | AliFragmentationFunctionCorrections(); | |
55 | AliFragmentationFunctionCorrections(const AliFragmentationFunctionCorrections ©); | |
56 | AliFragmentationFunctionCorrections& operator=(const AliFragmentationFunctionCorrections &o); | |
57 | virtual ~AliFragmentationFunctionCorrections(); | |
58 | ||
59 | virtual void SetDebugLevel(Int_t debug){ fDebug = debug; } | |
60 | ||
61 | void DeleteHistoArray(TH1F** hist) const; | |
62 | void DeleteTHnSparseArray(THnSparse** hist) const; | |
63 | TH1F** BookHistoArray(); | |
64 | THnSparse** BookTHnSparseArray(); | |
65 | void AddCorrectionLevel(const char* label = ""); | |
66 | void AddCorrectionLevelBgr(const char* label = ""); | |
67 | void AddCorrectionLevelSinglePt(const char* label = ""); | |
68 | ||
69 | void SetJetPtSlices(Float_t* bins, const Int_t nJetPtSlices); | |
70 | ||
71 | void SetHistoBins(const Int_t jetPtSlice, const Int_t sizeBins, Double_t* bins,Int_t type); | |
72 | void SetHistoBins(const Int_t jetPtSlice, const Int_t nBinsLimits, Double_t* binsLimits, Double_t* binsWidth,Int_t type); | |
73 | void SetHistoBinsSinglePt(const Int_t sizeBins, Double_t* bins); | |
74 | void SetHistoBinsSinglePt(const Int_t nBinsLimits, Double_t* binsLimits, Double_t* binsWidth); | |
75 | ||
76 | // set histo bins for inclusive pt spectra | |
77 | ||
78 | void NormalizeTH1(TH1* hist, const Float_t nJets); | |
79 | void NormalizeFF(); | |
80 | void NormalizeBgr(); | |
81 | void ReadRawFF(TString strfile, TString strID, TString strFFID = "RecCuts"); | |
82 | void ReadRawFF(TString strfile, TString strdir, TString strlist, TString strFFID); | |
83 | void ReadRawBgr(TString strfile, TString strID, TString strBgrID = "Perp", TString strFFID = "RecCuts"); | |
84 | void ReadRawBgr(TString strfile, TString strdir, TString strlist, TString strBgrID, TString strFFID); | |
85 | void ReadRawBgrEmbedding(TString strfile, TString strID, TString strFFID); | |
86 | void ReadRawBgrEmbedding(TString strfile, TString strdir, TString strlist, TString strFFID); | |
87 | ||
88 | void WriteOutput(TString strfile, TString strdir = "", Bool_t updateOutfile = kTRUE); | |
89 | ||
90 | THnSparse* TH1toSparse(const TH1F* hist, TString strName, TString strTit, const Bool_t fillConst = kFALSE); | |
91 | ||
92 | THnSparse* Unfold(THnSparse* hnHist, const THnSparse* hnResponse, const THnSparse* hnEff, const Int_t nIter, | |
93 | const Bool_t useCorrelatedErrors = kTRUE, const THnSparse* hnPrior = 0x0); | |
94 | ||
95 | void UnfoldHistos(const Int_t nIter, const Bool_t useCorrelatedErrors, const Int_t type); | |
96 | ||
97 | void UnfoldPt(const Int_t nIter=5, const Bool_t useCorrelatedErrors=kTRUE); | |
98 | void UnfoldZ(const Int_t nIter=5, const Bool_t useCorrelatedErrors=kTRUE); | |
99 | void UnfoldXi(const Int_t nIter=5, const Bool_t useCorrelatedErrors=kTRUE); | |
100 | ||
101 | TH1F* ApplyResponse(const TH1F* hist, THnSparse* hnResponse); | |
102 | ||
103 | void ReadEfficiency(TString strfile, TString strdir = "", TString strlist = ""); | |
104 | void ReadBgrEfficiency(TString strfile, TString strdir = "", TString strlist = ""); | |
105 | ||
106 | void EffCorr(); | |
107 | void EffCorrBgr(); | |
108 | ||
109 | void XiShift(const Int_t corrLevel); | |
110 | ||
111 | void SubtractBgr(); | |
112 | ||
113 | void WriteSingleTrackEff(TString strInfile, TString strID, TString strOutfile,Bool_t updateOutfile = kTRUE, TString strOutDir = "", TString strPostfix = ""); | |
114 | void WriteSingleTrackEff(TString strInfile, TString strdir, TString strlist, TString strOutfile, Bool_t updateOutfile = kTRUE, TString strOutDir = "", | |
115 | TString strPostfix = ""); | |
116 | ||
117 | void WriteSingleTrackSecCorr(TString strInfile, TString strID, TString strOutfile,Bool_t updateOutfile = kTRUE, TString strOutDir = ""); | |
118 | void WriteSingleTrackSecCorr(TString strInfile, TString strdir, TString strlist, TString strOutfile, Bool_t updateOutfile = kTRUE, TString strOutDir = ""); | |
119 | ||
120 | void WriteSingleResponse(TString strInfile, TString strID, TString strOutfile,Bool_t updateOutfile = kTRUE, TString strOutDir = ""); | |
121 | void WriteSingleResponse(TString strInfile, TString strdir, TString strlist, TString strOutfile, Bool_t updateOutfile = kTRUE, TString strOutDir = ""); | |
122 | ||
123 | void WriteJetTrackEff(TString strInfile, TString strID, TString strOutfile,Bool_t updateOutfile = kTRUE); | |
124 | void WriteJetTrackEff(TString strInfile, TString strdir, TString strlist, TString strOutfile, Bool_t updateOutfile = kTRUE); | |
125 | ||
126 | void WriteJetSecCorr(TString strInfile, TString strID, TString strOutfile,Bool_t updateOutfile = kTRUE); | |
127 | void WriteJetSecCorr(TString strInfile, TString strdir, TString strlist, TString strOutfile, Bool_t updateOutfile = kTRUE); | |
128 | ||
129 | void WriteJetResponse(TString strInfile, TString strID, TString strOutfile,Bool_t updateOutfile = kTRUE); | |
130 | void WriteJetResponse(TString strInfile, TString strdir, TString strlist,TString strOutfile, Bool_t updateOutfile); | |
131 | ||
132 | void ReadResponse(TString strfile, TString strdir="", TString strlist=""); | |
133 | void ReadPriors(TString strfile,const Int_t type); | |
134 | ||
135 | void ProjectSingleResponseMatrix(TString strOutfile, Bool_t updateOutfile, TString strOutDir = ""); | |
136 | void ProjectJetResponseMatrices(TString strOutfile); | |
137 | ||
138 | void RebinHisto(const Int_t jetPtSlice, const Int_t nBinsLimits, Double_t* binsLimits, Double_t* binsWidth, const Int_t type); | |
139 | ||
633ed180 | 140 | void WriteJetSpecResponse(TString strInfile, TString strdir, TString strlist /*, TString strOutfile*/ ); |
39e2b057 | 141 | |
142 | void ReadSingleTrackEfficiency(TString strfile, TString strdir="", TString strlist="", TString strname="hSingleTrackEffPt"); | |
143 | void ReadSingleTrackResponse(TString strfile, TString strdir="", TString strlist="", TString strname="fhnResponseSinglePt"); | |
144 | void ReadSingleTrackSecCorr(TString strfile, TString strdir="", TString strlist="", TString strname="hSingleTrackSecCorrPt"); | |
145 | void ReadSingleTrackCorrection(TString strfile, TString strdir, TString strlist, TString strname, const Int_t type); | |
146 | ||
147 | void ReadRawPtSpec(TString strInfile, TString strID); | |
148 | void ReadRawPtSpec(TString strfile, TString strdir, TString strlist); | |
149 | void ReadRawPtSpecQATask(TString strfile, TString strdir, TString strlist); // spectra from Martas QA task | |
150 | void EffCorrSinglePt(); | |
151 | void UnfoldSinglePt(const Int_t nIter, const Bool_t useCorrelatedErrors); | |
152 | void SecCorrSinglePt(); | |
153 | ||
154 | ||
155 | enum {kFlagPt=0,kFlagZ,kFlagXi,kFlagSinglePt}; | |
156 | enum {kFlagEfficiency=0,kFlagResponse,kFlagSecondaries}; | |
157 | ||
158 | ||
159 | private: | |
160 | ||
161 | static const Int_t fgMaxNCorrectionLevels = 10; //! max number of corrections | |
162 | ||
163 | Int_t fDebug; //! Debug level | |
164 | Int_t fNJetPtSlices; //! n slices in jet pt | |
165 | TArrayF* fJetPtSlices; //! array to hold slices in jet pt | |
166 | ||
167 | TArrayF* fNJets; //! nJets per jet pt slice - non-int e.g. for xsec/nTrials scaled spectra | |
168 | TArrayF* fNJetsBgr; //! nJets bgr per jet pt slice - non-int e.g. for xsec/nTrials scaled spectra | |
169 | ||
170 | Int_t fNHistoBinsSinglePt; //! nBins inclusive pt spec histos - leave undefinded to use original binning | |
171 | TArrayD* fHistoBinsSinglePt; //! inclusive pt spec histo bins | |
172 | ||
173 | Int_t* fNHistoBinsPt; //! nBins FF histos in each jet pt slice - leave undefinded for any slice to use original binning | |
174 | Int_t* fNHistoBinsZ; //! nBins FF histos in each jet pt slice - leave undefinded for any slice to use original binning | |
175 | Int_t* fNHistoBinsXi; //! nBins FF histos in each jet pt slice - leave undefinded for any slice to use original binning | |
176 | ||
177 | TArrayD** fHistoBinsPt; //! FF histo bins | |
178 | TArrayD** fHistoBinsZ; //! FF histo bins | |
179 | TArrayD** fHistoBinsXi; //! FF histo bins | |
180 | ||
181 | Int_t fNCorrectionLevels; //! corrections applied: efficiency, secondaries, resolution unfolding, bgr subtraction | |
182 | AliFragFuncCorrHistos** fCorrFF; //! array of fragmentation functions, dimensions: jet pt bins, correction steps | |
183 | ||
184 | Int_t fNCorrectionLevelsBgr; //! corrections applied: efficiency, secondaries, resolution unfolding, bgr subtraction | |
185 | AliFragFuncCorrHistos** fCorrBgr; //! array of bgr fragmentation functions, dimensions: jet pt bins, correction steps | |
186 | ||
187 | Int_t fNCorrectionLevelsSinglePt; //! corrections applied: efficiency, secondaries, resolution unfolding, bgr subtraction | |
188 | AliFragFuncCorrHistos** fCorrSinglePt; //! array to keep single track pt spectra, 1D in jet pt bins dimension | |
189 | ||
190 | ||
191 | ||
192 | // xi shift | |
193 | TH1F** fh1FFXiShift; //! FF: track xi, corrected for shift in jet energy | |
194 | ||
195 | // eff correction | |
196 | TH1F* fh1EffSinglePt; //! efficiency all tracks | |
197 | ||
198 | TH1F** fh1EffPt; //! reconstruction efficiency track pt | |
199 | TH1F** fh1EffZ; //! reconstruction efficiency z | |
200 | TH1F** fh1EffXi; //! reconstruction efficiency xi | |
201 | ||
202 | TH1F** fh1EffBgrPt; //! reconstruction efficiency bgr track pt | |
203 | TH1F** fh1EffBgrZ; //! reconstruction efficiency bgr z | |
204 | TH1F** fh1EffBgrXi; //! reconstruction efficiency bgr xi | |
205 | ||
206 | ||
207 | // unfolding | |
208 | ||
209 | TH1F** fh1FFTrackPtBackFolded; //! FF: track pt backfolded (unfolded + smeared with response matrix) | |
210 | TH1F** fh1FFZBackFolded; //! FF: track z, backfolded (unfolded + smeared with response matrix) | |
211 | TH1F** fh1FFXiBackFolded; //! FF: track xi,backfolded (unfolded + smeared with response matrix) | |
212 | ||
213 | TH1F** fh1FFRatioTrackPtFolded; //! ratio FF: track pt unfolded / original | |
214 | TH1F** fh1FFRatioZFolded; //! ratio FF: track z unfolded / original | |
215 | TH1F** fh1FFRatioXiFolded; //! ratio FF: track xi unfolded / original | |
216 | ||
217 | TH1F** fh1FFRatioTrackPtBackFolded; //! ratio FF: track pt backfolded / original | |
218 | TH1F** fh1FFRatioZBackFolded; //! ratio FF: track z backfolded / original | |
219 | TH1F** fh1FFRatioXiBackFolded; //! ratio FF: track xi backfolded / original | |
220 | ||
221 | TH1F* fh1SingleTrackPtBackFolded; //! inclusive track pt backfolded (unfolded + smeared with response matrix) | |
222 | TH1F* fh1RatioSingleTrackPtFolded; //! ratio inclusive track pt unfolded / original | |
223 | TH1F* fh1RatioSingleTrackPtBackFolded; //! ratio inblusive track pt backfolded / original | |
224 | ||
225 | THnSparse* fhnResponseSinglePt; //! response matrix pt gen vs rec all tracks | |
226 | THnSparse** fhnResponsePt; //! response matrix pt gen vs rec | |
227 | THnSparse** fhnResponseZ; //! response matrix z gen vs rec | |
228 | THnSparse** fhnResponseXi; //! response matrix xi gen vs rec | |
229 | ||
230 | TH1F** fh1FFTrackPtPrior; //! FF: track pt prior | |
231 | TH1F** fh1FFZPrior; //! FF: track z prior | |
232 | TH1F** fh1FFXiPrior; //! FF: track xi prior | |
233 | ||
234 | // secondaries | |
235 | TH1F* fh1SecCorrSinglePt; //! secondaries correction all tracks | |
236 | ||
237 | ||
238 | ||
239 | ClassDef(AliFragmentationFunctionCorrections, 1); | |
240 | }; | |
241 | ||
242 | #endif |