#include "AliAnalysisTaskSE.h"
#include "AliCFVertexingHF2Prong.h"
#include "AliCFVertexingHF3Prong.h"
+#include "AliCFVertexingHFLctoV0bachelor.h"
#include "AliCFVertexingHF.h"
#include <TH1F.h>
+#include <TProfile.h>
class TH1I;
class TParticle ;
kSnail = 0, // slow configuration, all variables
kCheetah = 1 // fast configuration, only a subset of variables
};
+
+ enum {
+ kAll = 0, // all decays (resonant + non-resonant)
+ kNonResonant = 1, // only non resonant
+ kL1520 = 2, // Lc --> L(1520) + p
+ kKstar = 3, // Lc --> K* + pi
+ kDelta = 4 // Lc --> Delta + K
+ };
+
+ enum { kNtrk10=0, kNtrk10to16=1, kVZERO=2 }; // multiplicity estimators
AliCFTaskVertexingHF();
AliCFTaskVertexingHF(const Char_t* name, AliRDHFCuts* cuts, TF1* func = 0x0);
// CORRECTION FRAMEWORK RELATED FUNCTIONS
void SetCFManager(AliCFManager* io) {fCFManager = io;} // global correction manager
AliCFManager * GetCFManager() {return fCFManager;} // get corr manager
-
+
// Setters (and getters) for the config macro
void SetFillFromGenerated(Bool_t flag) {fFillFromGenerated = flag;}
Bool_t GetFillFromGenerated() const {return fFillFromGenerated;}
fHistoMCNch=new TH1F(*h);
}
void CreateMeasuredNchHisto();
+ void SetMeasuredNchHisto(TH1F* h){
+ if(fHistoMeasNch) delete fHistoMeasNch;
+ fHistoMeasNch=new TH1F(*h);
+ }
Double_t GetNchWeight(Int_t nch);
+ void SetMultiplicityEstimator(Int_t value){ fMultiplicityEstimator=value; }
+ Int_t GetMultiplicityEstimator(){ return fMultiplicityEstimator; }
+ void SetIsPPData(Bool_t flag){ fIsPPData = flag; }
+ void SetIsPPbData(Bool_t flag){ fIsPPbData = flag; }
+
+ void SetUseNchTrackletsWeight(Bool_t useWeight = kTRUE) { fUseNchWeight=useWeight; fUseTrackletsWeight=useWeight; }
+ Bool_t GetUseNchTrackletsWeight() const {return fUseTrackletsWeight;}
+
+ void SetUseZvtxCorrectedNtrkEstimator(Bool_t flag) { fZvtxCorrectedNtrkEstimator=flag; }
+ Bool_t GetUseZvtxCorrectedNtrkEstimator() { return fZvtxCorrectedNtrkEstimator; }
+ void SetMultiplVsZProfileLHC10b(TProfile* hprof){
+ if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
+ fMultEstimatorAvg[0]=new TProfile(*hprof);
+ }
+ void SetMultiplVsZProfileLHC10c(TProfile* hprof){
+ if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
+ fMultEstimatorAvg[1]=new TProfile(*hprof);
+ }
+ void SetMultiplVsZProfileLHC10d(TProfile* hprof){
+ if(fMultEstimatorAvg[2]) delete fMultEstimatorAvg[2];
+ fMultEstimatorAvg[2]=new TProfile(*hprof);
+ }
+ void SetMultiplVsZProfileLHC10e(TProfile* hprof){
+ if(fMultEstimatorAvg[3]) delete fMultEstimatorAvg[3];
+ fMultEstimatorAvg[3]=new TProfile(*hprof);
+ }
+
+ void SetMultiplVsZProfileLHC13b(TProfile* hprof){
+ if(fMultEstimatorAvg[0]) delete fMultEstimatorAvg[0];
+ fMultEstimatorAvg[0]=new TProfile(*hprof);
+ }
+ void SetMultiplVsZProfileLHC13c(TProfile* hprof){
+ if(fMultEstimatorAvg[1]) delete fMultEstimatorAvg[1];
+ fMultEstimatorAvg[1]=new TProfile(*hprof);
+ }
+
+ TProfile* GetEstimatorHistogram(const AliVEvent* event);
+ void SetReferenceMultiplcity(Double_t rmu){fRefMult=rmu;}
+
void SetDselection(UShort_t originDselection) {fOriginDselection=originDselection;}
UShort_t GetDselection (){return fOriginDselection;}
void SetSign(Char_t isSign) {fSign = isSign;}
void SetWeightFunction(TF1* func) {fFuncWeight = func;}
TF1* GetWeightFunction() const {return fFuncWeight;}
-
+ void SetPtWeightsFromFONLL276overLHC12a17a();
+ void SetPtWeightsFromDataPbPb276overLHC12a17a();
+ void SetPtWeightsFromFONLL276overLHC12a17b();
+ void SetPtWeightsFromFONLL276andBAMPSoverLHC12a17b();
+ void SetPtWeightsFromFONLL276overLHC10f6a();
+ void SetPtWeightsFromFONLL7overLHC10f6a();
+ void SetPtWeightsFromFONLL7overLHC12a12();
+ void SetPtWeightsFromFONLL7overLHC12a12bis();
+ void SetPtWeightsFromFONLL7overLHC13e2fix();
+ void SetPtWeightsFromFONLL5overLHC10f6a();
+ void SetPtWeightsFromFONLL5overLHC13d3();
+
+ void SetResonantDecay(UInt_t resonantDecay) {fResonantDecay = resonantDecay;}
+ UInt_t GetResonantDecay() const {return fResonantDecay;}
+
+ void SetKeepLctoK0Sp() {fLctoV0bachelorOption=1;}
+ void SetKeepLctoLambdaBarpi() {fLctoV0bachelorOption=2;}
+ void SetKeepLctoLambdapi() {fLctoV0bachelorOption=4;}
+ void SetKeepLctoV0bachelor() {fLctoV0bachelorOption=7;}
+
+ void SetCountLctoK0Sp(){fGenLctoV0bachelorOption=AliCFVertexingHFLctoV0bachelor::kCountK0Sp;}
+ void SetCountLctoLambdapi(){fGenLctoV0bachelorOption=AliCFVertexingHFLctoV0bachelor::kCountLambdapi;}
+
+ void SetUseSelectionBit(Bool_t flag) { fUseSelectionBit=flag; }
+ Bool_t GetUseSelectionBit() const { return fUseSelectionBit; }
+
+ Bool_t ProcessLctoV0Bachelor(Int_t returnCodeDs) const;
+
protected:
AliCFManager *fCFManager; // pointer to the CF manager
TH1I *fHistEventsProcessed; //! simple histo for monitoring the number of events processed
THnSparse* fCorrelation; // response matrix for unfolding
+ TList *fListProfiles; //list of profile histos for z-vtx correction
Int_t fCountMC; // MC particle found
Int_t fCountAcc; // MC particle found that satisfy acceptance cuts
Int_t fCountVertex; // Reco particle found that satisfy vertex constrained
Bool_t fUseFlatPtWeight; // flag to decide to use a flat pt shape
Bool_t fUseZWeight; // flag to decide whether to use z-vtx weights != 1 when filling the container or not
Bool_t fUseNchWeight; // flag to decide whether to use Ncharged weights != 1 when filling the container or not
- Int_t fNvar; // number of variables for the container
+ Bool_t fUseTrackletsWeight; // flag to decide whether to use Ncharged weights != 1 when filling the container or not
+ Int_t fNvar; // number of variables for the container
TString fPartName; // D meson name
TString fDauNames; // daughter in fin state
Char_t fSign; // flag to decide wheter to keep D0 only (0), D0bar only (1), or both D0 and D0bar (2)
TF1* fFuncWeight; // user-defined function to be used to calculate weights
TH1F* fHistoMeasNch; // histogram with measured Nch distribution (pp 7 TeV)
TH1F* fHistoMCNch; // histogram with Nch distribution from MC production
+ UInt_t fResonantDecay; // resonant deacy channel to be used if the CF should be run on resonant channels only
+ Int_t fLctoV0bachelorOption; // Lc->V0+bachelor decay option (selection level)
+ Int_t fGenLctoV0bachelorOption; // Lc->V0+bachelor decay option (generation level)
+ Bool_t fUseSelectionBit; // flag to use selection bit
+ UInt_t fPDGcode; // PDG code
- ClassDef(AliCFTaskVertexingHF,12); // class for HF corrections as a function of many variables
+ Int_t fMultiplicityEstimator; // Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2
+ TProfile* fMultEstimatorAvg[4]; // TProfile with mult vas. Z per period
+ Double_t fRefMult; // refrence multiplcity (period b)
+ Bool_t fZvtxCorrectedNtrkEstimator; // flag to use the z-vtx corrected (if not use uncorrected) multiplicity estimator
+ Bool_t fIsPPData; // flag for pp data (not checking centrality)
+ Bool_t fIsPPbData; // flag for pPb data (used for multiplicity corrections)
+
+ ClassDef(AliCFTaskVertexingHF,19); // class for HF corrections as a function of many variables
};
#endif