-#ifndef ALIANALYSISTASKTRIGGEREDBF_CXX\r
-#define ALIANALYSISTASKTRIGGEREDBF_CXX\r
-\r
-// Analysis task for the TriggeredBF code\r
-// Authors: Panos Cristakoglou@cern.ch, m.weber@cern.ch\r
-\r
-#include "AliLog.h"\r
-#include "AliAnalysisTaskSE.h"\r
-#include "AliBalanceTriggered.h"\r
-#include "AliPIDResponse.h"\r
-#include "AliPIDCombined.h"\r
-\r
-class TList;\r
-class TH1F;\r
-class TH2F;\r
-\r
-class AliBalanceTriggered;\r
-class AliEventPoolManager;\r
-\r
-\r
-class AliAnalysisTaskTriggeredBF : public AliAnalysisTaskSE {\r
- public:\r
- AliAnalysisTaskTriggeredBF(const char *name = "AliAnalysisTaskTriggeredBF");\r
- virtual ~AliAnalysisTaskTriggeredBF(); \r
- \r
- \r
- virtual void UserCreateOutputObjects();\r
- virtual void UserExec(Option_t *option);\r
- virtual void UserExecMix(Option_t*);\r
- virtual void FinishTaskOutput();\r
- virtual void Terminate(Option_t *);\r
-\r
- void SetAnalysisObject(AliBalanceTriggered *const analysis) {\r
- fBalance = analysis;\r
- }\r
- void SetShufflingObject(AliBalanceTriggered *const analysisShuffled) {\r
- fRunShuffling = kTRUE;\r
- fShuffledBalance = analysisShuffled;\r
- }\r
- void SetMixingObject(AliBalanceTriggered *const analysisMixed) {\r
- fRunMixing = kTRUE;\r
- fMixedBalance = analysisMixed;\r
- }\r
- void SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }\r
-\r
- void SetRunV0(Bool_t runV0 = kTRUE) { fRunV0 = runV0; }\r
- \r
- void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {\r
- fVxMax = vx;\r
- fVyMax = vy;\r
- fVzMax = vz;\r
- }\r
-\r
- //==============AOD analysis==============//\r
- void SetAODtrackCutBit(Int_t bit){\r
- nAODtrackCutBit = bit;\r
- }\r
-\r
- void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){\r
- fPtMin = ptmin; fPtMax = ptmax;\r
- fEtaMin = etamin; fEtaMax = etamax;\r
-\r
- }\r
-\r
- void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){\r
- fDCAxyCut = DCAxy;\r
- fDCAzCut = DCAz;\r
- }\r
-\r
- void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){\r
- fTPCchi2Cut = maxTPCchi2;\r
- fNClustersTPCCut = minNClustersTPC;\r
- }\r
-\r
- //Centrality\r
- void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}\r
- const char* GetCentralityEstimator(void) const {return fCentralityEstimator;}\r
- void SetCentralityPercentileRange(Double_t min, Double_t max) { \r
- fUseCentrality = kTRUE;\r
- fCentralityPercentileMin=min;\r
- fCentralityPercentileMax=max;\r
- }\r
- void SetImpactParameterRange(Double_t min, Double_t max) { \r
- fUseCentrality = kTRUE;\r
- fImpactParameterMin=min;\r
- fImpactParameterMax=max;\r
- }\r
-\r
- //multiplicity\r
- void SetMultiplicityRange(Int_t min, Int_t max) {\r
- fUseMultiplicity = kTRUE;\r
- fNumberOfAcceptedTracksMin = min;\r
- fNumberOfAcceptedTracksMax = max;}\r
- \r
- void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}\r
- \r
-\r
- private:\r
- Float_t IsEventAccepted(AliVEvent* event);\r
- TObjArray* GetAcceptedTracks(AliVEvent* event);\r
- TObjArray* GetAcceptedV0s(AliVEvent* event);\r
- TObjArray* GetShuffledTracks(TObjArray* tracks);\r
-\r
- AliBalanceTriggered *fBalance; //TriggeredBF object\r
- Bool_t fRunShuffling;//run shuffling or not\r
- AliBalanceTriggered *fShuffledBalance; //TriggeredBF object (shuffled)\r
- Bool_t fRunMixing;//run mixing or not\r
- Int_t fMixingTracks;//number of tracks to mix\r
- AliBalanceTriggered *fMixedBalance; //TriggeredBF object (mixed)\r
- AliEventPoolManager* fPoolMgr; //! event pool manager\r
- Bool_t fRunV0;\r
-\r
- AliPIDResponse *fPIDResponse; //! PID response object\r
- AliPIDCombined *fPIDCombined; //! combined PID object\r
-\r
- TList *fList; //fList object\r
- TList *fListTriggeredBF; //fList object\r
- TList *fListTriggeredBFS; //fList object (shuffling)\r
- TList *fListTriggeredBFM; //fList object (mixing)\r
- TList *fHistListPIDQA; //! list of histograms\r
- TList *fHistListV0; // list of V0 histograms\r
-\r
- TH1F *fHistEventStats; //event stats\r
- TH2F *fHistCentStats; //centrality stats\r
- TH1F *fHistTriggerStats; //trigger stats\r
- TH1F *fHistTrackStats; //Track filter bit stats\r
- TH1F *fHistVx; //x coordinate of the primary vertex\r
- TH1F *fHistVy; //y coordinate of the primary vertex\r
- TH1F *fHistVz; //z coordinate of the primary vertex\r
-\r
- TH2F *fHistClus;//number of clusters (QA histogram)\r
- TH2F *fHistDCA;//DCA (QA histogram)\r
- TH1F *fHistChi2;//track chi2 (QA histogram)\r
- TH1F *fHistPt;//transverse momentum (QA histogram)\r
- TH1F *fHistEta;//pseudorapidity (QA histogram)\r
- TH1F *fHistPhi;//phi (QA histogram)\r
- TH1F *fHistPhiBefore;//phi before v2 afterburner (QA histogram)\r
- TH1F *fHistPhiAfter;//phi after v2 afterburner (QA histogram)\r
- TH2F *fHistV0M;//V0 multiplicities (QA histogram)\r
- TH2F *fHistRefTracks;//reference track multiplicities (QA histogram)\r
-\r
- // V0 histograms\r
- TH1F *fHistV0MultiplicityBeforeTrigSel; //! V0 multiplicity distribution\r
- TH1F *fHistV0MultiplicityForTrigEvt; //! V0 multiplicity distribution\r
- TH1F *fHistV0MultiplicityForSelEvt; //! V0 multiplicity distribution\r
- TH1F *fHistV0MultiplicityForSelEvtNoTPCOnly; //! V0 multiplicity distribution\r
- TH1F *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup;//! V0 multiplicity distribution\r
- \r
- TH1F *fHistMultiplicityBeforeTrigSel; //! multiplicity distribution \r
- TH1F *fHistMultiplicityForTrigEvt; //! multiplicity distribution\r
- TH1F *fHistMultiplicity; //! multiplicity distribution\r
- TH1F *fHistMultiplicityNoTPCOnly; //! multiplicity distribution\r
- TH1F *fHistMultiplicityNoTPCOnlyNoPileup; //! multiplicity distribution\r
-\r
- //before selection\r
- TH1F* fHistV0InvMassK0; // Invariant mass K0\r
- TH1F* fHistV0InvMassLambda; // Invariant mass Lambda\r
- TH1F* fHistV0InvMassAntiLambda; // Invariant mass AntiLambda\r
- TH2F* fHistV0Armenteros; // Armenteros plot\r
-\r
- //after selection\r
- TH1F* fHistV0SelInvMassK0; // Invariant mass K0\r
- TH1F* fHistV0SelInvMassLambda; // Invariant mass Lambda\r
- TH1F* fHistV0SelInvMassAntiLambda; // Invariant mass AntiLambda\r
- TH2F* fHistV0SelArmenteros; // Armenteros plot\r
- \r
- TString fCentralityEstimator; //"V0M","TRK","TKL","ZDC","FMD"\r
- Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)\r
- Double_t fCentralityPercentileMin;//centrality percentile min\r
- Double_t fCentralityPercentileMax;//centrality percentile max\r
- Double_t fImpactParameterMin;//impact parameter min (used for MC)\r
- Double_t fImpactParameterMax;//impact parameter max (used for MC)\r
-\r
- Bool_t fUseMultiplicity;//use the multiplicity cuts\r
- Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
- Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
- TH1F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks\r
-\r
- Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection\r
-\r
- Double_t fVxMax;//vxmax\r
- Double_t fVyMax;//vymax\r
- Double_t fVzMax;//vzmax\r
-\r
- Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)\r
-\r
- Double_t fPtMin;//only used for AODs\r
- Double_t fPtMax;//only used for AODs\r
- Double_t fEtaMin;//only used for AODs\r
- Double_t fEtaMax;//only used for AODs\r
-\r
- Double_t fDCAxyCut;//only used for AODs\r
- Double_t fDCAzCut;//only used for AODs\r
-\r
- Double_t fTPCchi2Cut;//only used for AODs\r
- Int_t fNClustersTPCCut;//only used for AODs\r
-\r
- \r
- AliAnalysisTaskTriggeredBF(const AliAnalysisTaskTriggeredBF&); // not implemented\r
- AliAnalysisTaskTriggeredBF& operator=(const AliAnalysisTaskTriggeredBF&); // not implemented\r
- \r
- ClassDef(AliAnalysisTaskTriggeredBF, 1); // example of analysis\r
-};\r
-\r
-// class used for io with AliBalance (taken from AliAnalysisTaskPhiCorrelations)\r
-class AliBFBasicParticle : public AliVParticle\r
-{ \r
- public:\r
- AliBFBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Double_t correction)\r
- : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge), fCorrection(correction)\r
- {\r
- }\r
- ~AliBFBasicParticle() {}\r
- \r
- // kinematics\r
- virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t Pt() const { return fpT; }\r
- virtual Double_t P() const { AliFatal("Not implemented"); return 0; }\r
- virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }\r
-\r
- virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }\r
- virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }\r
-\r
- virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t Phi() const { return fPhi; }\r
- virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }\r
-\r
-\r
- virtual Double_t E() const { AliFatal("Not implemented"); return 0; }\r
- virtual Double_t M() const { AliFatal("Not implemented"); return 0; }\r
- \r
- virtual Double_t Eta() const { return fEta; }\r
- virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }\r
- \r
- virtual Short_t Charge() const { return fCharge; }\r
- virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }\r
-\r
- virtual Double_t Correction() const { return fCorrection; } //=============================correction\r
- \r
- // PID\r
- virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; } \r
- virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }\r
- \r
- private:\r
- Float_t fEta; // eta\r
- Float_t fPhi; // phi\r
- Float_t fpT; // pT\r
- Short_t fCharge; // charge\r
- Double_t fCorrection; //============================correction\r
-\r
- ClassDef( AliBFBasicParticle, 1); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing\r
-};\r
-\r
-#endif\r
+#ifndef ALIANALYSISTASKTRIGGEREDBF_CXX
+#define ALIANALYSISTASKTRIGGEREDBF_CXX
+
+// Analysis task for the TriggeredBF code
+// Authors: Panos Cristakoglou@cern.ch, m.weber@cern.ch
+
+#include "AliLog.h"
+#include "AliAnalysisTaskSE.h"
+#include "AliBalanceTriggered.h"
+#include "AliPIDResponse.h"
+#include "AliPIDCombined.h"
+
+class TList;
+class TH1F;
+class TH2F;
+
+class AliBalanceTriggered;
+class AliEventPoolManager;
+
+
+class AliAnalysisTaskTriggeredBF : public AliAnalysisTaskSE {
+ public:
+ AliAnalysisTaskTriggeredBF(const char *name = "AliAnalysisTaskTriggeredBF");
+ virtual ~AliAnalysisTaskTriggeredBF();
+
+
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *option);
+ virtual void UserExecMix(Option_t*);
+ virtual void FinishTaskOutput();
+ virtual void Terminate(Option_t *);
+
+ void SetAnalysisObject(AliBalanceTriggered *const analysis) {
+ fBalance = analysis;
+ }
+ void SetShufflingObject(AliBalanceTriggered *const analysisShuffled) {
+ fRunShuffling = kTRUE;
+ fShuffledBalance = analysisShuffled;
+ }
+ void SetMixingObject(AliBalanceTriggered *const analysisMixed) {
+ fRunMixing = kTRUE;
+ fMixedBalance = analysisMixed;
+ }
+ void SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }
+
+ void SetRunV0(Bool_t runV0 = kTRUE) { fRunV0 = runV0; }
+
+ void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
+ fVxMax = vx;
+ fVyMax = vy;
+ fVzMax = vz;
+ }
+
+ //==============AOD analysis==============//
+ void SetAODtrackCutBit(Int_t bit){
+ nAODtrackCutBit = bit;
+ }
+
+ void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){
+ fPtMin = ptmin; fPtMax = ptmax;
+ fEtaMin = etamin; fEtaMax = etamax;
+
+ }
+
+ void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){
+ fDCAxyCut = DCAxy;
+ fDCAzCut = DCAz;
+ }
+
+ void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){
+ fTPCchi2Cut = maxTPCchi2;
+ fNClustersTPCCut = minNClustersTPC;
+ }
+
+ //Centrality
+ void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}
+ const char* GetCentralityEstimator(void) const {return fCentralityEstimator;}
+ void SetCentralityPercentileRange(Double_t min, Double_t max) {
+ fUseCentrality = kTRUE;
+ fCentralityPercentileMin=min;
+ fCentralityPercentileMax=max;
+ }
+ void SetImpactParameterRange(Double_t min, Double_t max) {
+ fUseCentrality = kTRUE;
+ fImpactParameterMin=min;
+ fImpactParameterMax=max;
+ }
+
+ //multiplicity
+ void SetMultiplicityRange(Int_t min, Int_t max) {
+ fUseMultiplicity = kTRUE;
+ fNumberOfAcceptedTracksMin = min;
+ fNumberOfAcceptedTracksMax = max;}
+
+ void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}
+
+
+ private:
+ Float_t IsEventAccepted(AliVEvent* event);
+ TObjArray* GetAcceptedTracks(AliVEvent* event);
+ TObjArray* GetAcceptedV0s(AliVEvent* event);
+ TObjArray* GetShuffledTracks(TObjArray* tracks);
+
+ AliBalanceTriggered *fBalance; //TriggeredBF object
+ Bool_t fRunShuffling;//run shuffling or not
+ AliBalanceTriggered *fShuffledBalance; //TriggeredBF object (shuffled)
+ Bool_t fRunMixing;//run mixing or not
+ Int_t fMixingTracks;//number of tracks to mix
+ AliBalanceTriggered *fMixedBalance; //TriggeredBF object (mixed)
+ AliEventPoolManager* fPoolMgr; //! event pool manager
+ Bool_t fRunV0;
+
+ AliPIDResponse *fPIDResponse; //! PID response object
+ AliPIDCombined *fPIDCombined; //! combined PID object
+
+ TList *fList; //fList object
+ TList *fListTriggeredBF; //fList object
+ TList *fListTriggeredBFS; //fList object (shuffling)
+ TList *fListTriggeredBFM; //fList object (mixing)
+ TList *fHistListPIDQA; //! list of histograms
+ TList *fHistListV0; // list of V0 histograms
+
+ TH1F *fHistEventStats; //event stats
+ TH2F *fHistCentStats; //centrality stats
+ TH1F *fHistTriggerStats; //trigger stats
+ TH1F *fHistTrackStats; //Track filter bit stats
+ TH1F *fHistVx; //x coordinate of the primary vertex
+ TH1F *fHistVy; //y coordinate of the primary vertex
+ TH1F *fHistVz; //z coordinate of the primary vertex
+
+ TH2F *fHistClus;//number of clusters (QA histogram)
+ TH2F *fHistDCA;//DCA (QA histogram)
+ TH1F *fHistChi2;//track chi2 (QA histogram)
+ TH1F *fHistPt;//transverse momentum (QA histogram)
+ TH1F *fHistEta;//pseudorapidity (QA histogram)
+ TH1F *fHistPhi;//phi (QA histogram)
+ TH1F *fHistPhiBefore;//phi before v2 afterburner (QA histogram)
+ TH1F *fHistPhiAfter;//phi after v2 afterburner (QA histogram)
+ TH2F *fHistV0M;//V0 multiplicities (QA histogram)
+ TH2F *fHistRefTracks;//reference track multiplicities (QA histogram)
+
+ // V0 histograms
+ TH1F *fHistV0MultiplicityBeforeTrigSel; //! V0 multiplicity distribution
+ TH1F *fHistV0MultiplicityForTrigEvt; //! V0 multiplicity distribution
+ TH1F *fHistV0MultiplicityForSelEvt; //! V0 multiplicity distribution
+ TH1F *fHistV0MultiplicityForSelEvtNoTPCOnly; //! V0 multiplicity distribution
+ TH1F *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup;//! V0 multiplicity distribution
+
+ TH1F *fHistMultiplicityBeforeTrigSel; //! multiplicity distribution
+ TH1F *fHistMultiplicityForTrigEvt; //! multiplicity distribution
+ TH1F *fHistMultiplicity; //! multiplicity distribution
+ TH1F *fHistMultiplicityNoTPCOnly; //! multiplicity distribution
+ TH1F *fHistMultiplicityNoTPCOnlyNoPileup; //! multiplicity distribution
+
+ //before selection
+ TH1F* fHistV0InvMassK0; // Invariant mass K0
+ TH1F* fHistV0InvMassLambda; // Invariant mass Lambda
+ TH1F* fHistV0InvMassAntiLambda; // Invariant mass AntiLambda
+ TH2F* fHistV0Armenteros; // Armenteros plot
+
+ //after selection
+ TH1F* fHistV0SelInvMassK0; // Invariant mass K0
+ TH1F* fHistV0SelInvMassLambda; // Invariant mass Lambda
+ TH1F* fHistV0SelInvMassAntiLambda; // Invariant mass AntiLambda
+ TH2F* fHistV0SelArmenteros; // Armenteros plot
+
+ TString fCentralityEstimator; //"V0M","TRK","TKL","ZDC","FMD"
+ Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)
+ Double_t fCentralityPercentileMin;//centrality percentile min
+ Double_t fCentralityPercentileMax;//centrality percentile max
+ Double_t fImpactParameterMin;//impact parameter min (used for MC)
+ Double_t fImpactParameterMax;//impact parameter max (used for MC)
+
+ Bool_t fUseMultiplicity;//use the multiplicity cuts
+ Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)
+ Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)
+ TH1F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks
+
+ Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection
+
+ Double_t fVxMax;//vxmax
+ Double_t fVyMax;//vymax
+ Double_t fVzMax;//vzmax
+
+ Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)
+
+ Double_t fPtMin;//only used for AODs
+ Double_t fPtMax;//only used for AODs
+ Double_t fEtaMin;//only used for AODs
+ Double_t fEtaMax;//only used for AODs
+
+ Double_t fDCAxyCut;//only used for AODs
+ Double_t fDCAzCut;//only used for AODs
+
+ Double_t fTPCchi2Cut;//only used for AODs
+ Int_t fNClustersTPCCut;//only used for AODs
+
+
+ AliAnalysisTaskTriggeredBF(const AliAnalysisTaskTriggeredBF&); // not implemented
+ AliAnalysisTaskTriggeredBF& operator=(const AliAnalysisTaskTriggeredBF&); // not implemented
+
+ ClassDef(AliAnalysisTaskTriggeredBF, 1); // example of analysis
+};
+
+// class used for io with AliBalance (taken from AliAnalysisTaskPhiCorrelations)
+class AliBFBasicParticle : public AliVParticle
+{
+ public:
+ AliBFBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Double_t correction)
+ : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge), fCorrection(correction)
+ {
+ }
+ ~AliBFBasicParticle() {}
+
+ // kinematics
+ virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t Pt() const { return fpT; }
+ virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
+ virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
+
+ virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
+ virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
+
+ virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t Phi() const { return fPhi; }
+ virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }
+
+
+ virtual Double_t E() const { AliFatal("Not implemented"); return 0; }
+ virtual Double_t M() const { AliFatal("Not implemented"); return 0; }
+
+ virtual Double_t Eta() const { return fEta; }
+ virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }
+
+ virtual Short_t Charge() const { return fCharge; }
+ virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }
+
+ virtual Double_t Correction() const { return fCorrection; } //=============================correction
+
+ // PID
+ virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; }
+ virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
+
+ private:
+ Float_t fEta; // eta
+ Float_t fPhi; // phi
+ Float_t fpT; // pT
+ Short_t fCharge; // charge
+ Double_t fCorrection; //============================correction
+
+ ClassDef( AliBFBasicParticle, 1); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing
+};
+
+#endif