#ifndef ALIHFECORRECTSPECTRUMBASE_H
#define ALIHFECORRECTSPECTRUMBASE_H
#ifndef ROOT_TNamed
#include <TNamed.h>
#endif
class TGraphErrors;
class TObject;
class TH1;
class TF1;
class TList;
class TObjArray;
class AliCFContainer;
class AliHFEcontainer;
class AliCFDataGrid;
class AliCFEffGrid;
class AliHFECorrectSpectrumBase : public TNamed{
public:
enum CFContainer_t{
kDataContainer = 0,
kBackgroundData = 1,
kMCContainerMC = 2,
kMCContainerESD = 3,
kMCContainerCharmMC = 4,
kMCWeightedContainerNonHFEESD = 5,
kMCWeightedContainerConversionESD = 6,
kDataContainerV0 = 7,
kMCWeightedContainerNonHFEESDSig = 8,
kMCWeightedContainerConversionESDSig = 9,
kPhotonicBackground = 10,
kNbCFContainers = 11
};
enum Chargetype_t{
kNegCharge = -1,
kPosCharge = 1,
kAllCharge = 0
};
AliHFECorrectSpectrumBase(const char* name);
~AliHFECorrectSpectrumBase();
virtual Bool_t Init(const AliHFEcontainer *, const AliHFEcontainer *, const AliHFEcontainer *, const AliHFEcontainer *,AliCFContainer *) { return kTRUE;};
virtual Bool_t Correct(Bool_t , Bool_t ) { return kTRUE;};
TGraphErrors *Normalize(THnSparse * const spectrum) const;
TGraphErrors *Normalize(AliCFDataGrid * const spectrum) const;
TGraphErrors *NormalizeTH1(TH1 *input) const;
void CorrectStatErr(AliCFDataGrid *backgroundGrid) const;
void SetCorrelation(THnSparseF * const correlation) {fCorrelation = correlation; };
void SetContainer(AliCFContainer *cont, AliHFECorrectSpectrumBase::CFContainer_t type);
void SetEfficiencyFunction(TF1 *efficiencyFunction) { fEfficiencyFunction = efficiencyFunction; };
void SetNumberOfEvents(Int_t nEvents) { fNEvents = nEvents; };
void SetMCEffStep(Int_t step) { fStepMC = step; };
void SetMCTruthStep(Int_t step) { fStepTrue = step; };
void SetStepToCorrect(Int_t step) { fStepData = step; };
void SetStepBeforeCutsV0(Int_t step) { fStepBeforeCutsV0 = step; };
void SetStepAfterCutsV0(Int_t step) { fStepAfterCutsV0 = step; };
void SetNbDimensions(Int_t nbDimensions);
void SetChargeChoosen(Chargetype_t chargechoosen) {fChargeChoosen = chargechoosen; };
void SetEtaRange(Double_t etamin, Double_t etamax) { fEtaRange[0] = etamin; fEtaRange[1] = etamax; fEtaSelected = kTRUE; }
void SetDim(Int_t dim0, Int_t dim1=0, Int_t dim2=0) { fDims[0] = dim0; fDims[1] = dim1; fDims[2] = dim2; };
void SetSmoothing(Bool_t setSmoothing) {fSetSmoothing = setSmoothing;};
void SetTestOneBinCentrality(Double_t centralitymin, Double_t centralitymax) { fTestCentralityLow = centralitymin; fTestCentralityHigh = centralitymax;}
void SetStepGuessedUnfolding(Int_t stepGuessedUnfolding) { fStepGuessedUnfolding = stepGuessedUnfolding; };
void SetNumberOfIteration(Int_t numberOfIteration) { fNumberOfIterations = numberOfIteration; };
protected:
AliHFECorrectSpectrumBase(const AliHFECorrectSpectrumBase &ref);
AliHFECorrectSpectrumBase &operator=(const AliHFECorrectSpectrumBase &ref);
virtual void Copy(TObject &o) const;
AliCFContainer *GetContainer(AliHFECorrectSpectrumBase::CFContainer_t contt);
AliCFContainer *GetSlicedContainer(AliCFContainer *cont, Int_t ndim, Int_t *dimensions,Int_t source=-1,Chargetype_t charge=kAllCharge,Int_t centralitylow=-1, Int_t centralityhigh=-1, Bool_t doCentralityProjection = kTRUE);
THnSparseF *GetSlicedCorrelation(THnSparseF *correlationmatrix,Int_t nDim, Int_t *dimensions,Chargetype_t charge=kAllCharge,Int_t centralitylow=-1, Int_t centralityhigh=-1, Bool_t doCentralityProjection = kTRUE) const;
TObject* GetSpectrum(const AliCFContainer * const c, Int_t step);
TObject* GetEfficiency(const AliCFContainer * const c, Int_t step, Int_t step0);
TObjArray *fCFContainers;
THnSparseF *fCorrelation;
TF1 *fEfficiencyFunction;
Bool_t fEtaSelected;
Bool_t fSetSmoothing;
Int_t fNbDimensions;
Int_t fNEvents;
Int_t fStepMC;
Int_t fStepTrue;
Int_t fStepData;
Int_t fStepBeforeCutsV0;
Int_t fStepAfterCutsV0;
Int_t fStepGuessedUnfolding;
Int_t fNumberOfIterations;
Chargetype_t fChargeChoosen;
Int_t fDims[3];
Double_t fEtaRange[2];
Double_t fEtaRangeNorm[2];
Int_t fTestCentralityLow;
Int_t fTestCentralityHigh;
private:
ClassDef(AliHFECorrectSpectrumBase, 1)
};
#endif
AliHFECorrectSpectrumBase.h:1 AliHFECorrectSpectrumBase.h:2 AliHFECorrectSpectrumBase.h:3 AliHFECorrectSpectrumBase.h:4 AliHFECorrectSpectrumBase.h:5 AliHFECorrectSpectrumBase.h:6 AliHFECorrectSpectrumBase.h:7 AliHFECorrectSpectrumBase.h:8 AliHFECorrectSpectrumBase.h:9 AliHFECorrectSpectrumBase.h:10 AliHFECorrectSpectrumBase.h:11 AliHFECorrectSpectrumBase.h:12 AliHFECorrectSpectrumBase.h:13 AliHFECorrectSpectrumBase.h:14 AliHFECorrectSpectrumBase.h:15 AliHFECorrectSpectrumBase.h:16 AliHFECorrectSpectrumBase.h:17 AliHFECorrectSpectrumBase.h:18 AliHFECorrectSpectrumBase.h:19 AliHFECorrectSpectrumBase.h:20 AliHFECorrectSpectrumBase.h:21 AliHFECorrectSpectrumBase.h:22 AliHFECorrectSpectrumBase.h:23 AliHFECorrectSpectrumBase.h:24 AliHFECorrectSpectrumBase.h:25 AliHFECorrectSpectrumBase.h:26 AliHFECorrectSpectrumBase.h:27 AliHFECorrectSpectrumBase.h:28 AliHFECorrectSpectrumBase.h:29 AliHFECorrectSpectrumBase.h:30 AliHFECorrectSpectrumBase.h:31 AliHFECorrectSpectrumBase.h:32 AliHFECorrectSpectrumBase.h:33 AliHFECorrectSpectrumBase.h:34 AliHFECorrectSpectrumBase.h:35 AliHFECorrectSpectrumBase.h:36 AliHFECorrectSpectrumBase.h:37 AliHFECorrectSpectrumBase.h:38 AliHFECorrectSpectrumBase.h:39 AliHFECorrectSpectrumBase.h:40 AliHFECorrectSpectrumBase.h:41 AliHFECorrectSpectrumBase.h:42 AliHFECorrectSpectrumBase.h:43 AliHFECorrectSpectrumBase.h:44 AliHFECorrectSpectrumBase.h:45 AliHFECorrectSpectrumBase.h:46 AliHFECorrectSpectrumBase.h:47 AliHFECorrectSpectrumBase.h:48 AliHFECorrectSpectrumBase.h:49 AliHFECorrectSpectrumBase.h:50 AliHFECorrectSpectrumBase.h:51 AliHFECorrectSpectrumBase.h:52 AliHFECorrectSpectrumBase.h:53 AliHFECorrectSpectrumBase.h:54 AliHFECorrectSpectrumBase.h:55 AliHFECorrectSpectrumBase.h:56 AliHFECorrectSpectrumBase.h:57 AliHFECorrectSpectrumBase.h:58 AliHFECorrectSpectrumBase.h:59 AliHFECorrectSpectrumBase.h:60 AliHFECorrectSpectrumBase.h:61 AliHFECorrectSpectrumBase.h:62 AliHFECorrectSpectrumBase.h:63 AliHFECorrectSpectrumBase.h:64 AliHFECorrectSpectrumBase.h:65 AliHFECorrectSpectrumBase.h:66 AliHFECorrectSpectrumBase.h:67 AliHFECorrectSpectrumBase.h:68 AliHFECorrectSpectrumBase.h:69 AliHFECorrectSpectrumBase.h:70 AliHFECorrectSpectrumBase.h:71 AliHFECorrectSpectrumBase.h:72 AliHFECorrectSpectrumBase.h:73 AliHFECorrectSpectrumBase.h:74 AliHFECorrectSpectrumBase.h:75 AliHFECorrectSpectrumBase.h:76 AliHFECorrectSpectrumBase.h:77 AliHFECorrectSpectrumBase.h:78 AliHFECorrectSpectrumBase.h:79 AliHFECorrectSpectrumBase.h:80 AliHFECorrectSpectrumBase.h:81 AliHFECorrectSpectrumBase.h:82 AliHFECorrectSpectrumBase.h:83 AliHFECorrectSpectrumBase.h:84 AliHFECorrectSpectrumBase.h:85 AliHFECorrectSpectrumBase.h:86 AliHFECorrectSpectrumBase.h:87 AliHFECorrectSpectrumBase.h:88 AliHFECorrectSpectrumBase.h:89 AliHFECorrectSpectrumBase.h:90 AliHFECorrectSpectrumBase.h:91 AliHFECorrectSpectrumBase.h:92 AliHFECorrectSpectrumBase.h:93 AliHFECorrectSpectrumBase.h:94 AliHFECorrectSpectrumBase.h:95 AliHFECorrectSpectrumBase.h:96 AliHFECorrectSpectrumBase.h:97 AliHFECorrectSpectrumBase.h:98 AliHFECorrectSpectrumBase.h:99 AliHFECorrectSpectrumBase.h:100 AliHFECorrectSpectrumBase.h:101 AliHFECorrectSpectrumBase.h:102 AliHFECorrectSpectrumBase.h:103 AliHFECorrectSpectrumBase.h:104 AliHFECorrectSpectrumBase.h:105 AliHFECorrectSpectrumBase.h:106 AliHFECorrectSpectrumBase.h:107 AliHFECorrectSpectrumBase.h:108 AliHFECorrectSpectrumBase.h:109 AliHFECorrectSpectrumBase.h:110 AliHFECorrectSpectrumBase.h:111 AliHFECorrectSpectrumBase.h:112 AliHFECorrectSpectrumBase.h:113 AliHFECorrectSpectrumBase.h:114 AliHFECorrectSpectrumBase.h:115 AliHFECorrectSpectrumBase.h:116 AliHFECorrectSpectrumBase.h:117 AliHFECorrectSpectrumBase.h:118 AliHFECorrectSpectrumBase.h:119 AliHFECorrectSpectrumBase.h:120 AliHFECorrectSpectrumBase.h:121 AliHFECorrectSpectrumBase.h:122 AliHFECorrectSpectrumBase.h:123 AliHFECorrectSpectrumBase.h:124 AliHFECorrectSpectrumBase.h:125 AliHFECorrectSpectrumBase.h:126 AliHFECorrectSpectrumBase.h:127 AliHFECorrectSpectrumBase.h:128 AliHFECorrectSpectrumBase.h:129 AliHFECorrectSpectrumBase.h:130 AliHFECorrectSpectrumBase.h:131 AliHFECorrectSpectrumBase.h:132 AliHFECorrectSpectrumBase.h:133 AliHFECorrectSpectrumBase.h:134 AliHFECorrectSpectrumBase.h:135 AliHFECorrectSpectrumBase.h:136 AliHFECorrectSpectrumBase.h:137 AliHFECorrectSpectrumBase.h:138 AliHFECorrectSpectrumBase.h:139 AliHFECorrectSpectrumBase.h:140