-/**************************************************************************\r
-* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
-* *\r
-* Author: The ALICE Off-line Project. *\r
-* Contributors are mentioned in the code where appropriate. *\r
-* *\r
-* Permission to use, copy, modify and distribute this software and its *\r
-* documentation strictly for non-commercial purposes is hereby granted *\r
-* without fee, provided that the above copyright notice appears in all *\r
-* copies and that both the copyright notice and this permission notice *\r
-* appear in the supporting documentation. The authors make no claims *\r
-* about the suitability of this software for any purpose. It is *\r
-* provided "as is" without express or implied warranty. *\r
-**************************************************************************/\r
-//\r
-// Task for Heavy Flavour Electron Analysis\r
-// Fills a single-inclusive electron pt-spectrum\r
-// For further information see implementation file\r
-//\r
-#ifndef ALIANALYSISTASKHFE_H\r
-#define ALIANALYSISTASKHFE_H\r
-\r
-#ifndef ALIANALYSISTASKSE_H\r
-#include "AliAnalysisTaskSE.h"\r
-#endif\r
-\r
-#ifndef ROOT_TString\r
-#include <TString.h>\r
-#endif\r
-\r
-#ifndef ROOT_TBits\r
-#include <TBits.h>\r
-#endif\r
-\r
-class AliAnalysisUtils;\r
-class AliESDtrackCuts;\r
-class AliHFEcontainer;\r
-class AliHFEcollection;\r
-class AliHFEcuts;\r
-class AliHFEextraCuts;\r
-class AliHFEelecbackground;\r
-class AliHFENonPhotonicElectron;\r
-class AliHFEmcQA;\r
-class AliHFEpid;\r
-class AliHFEpidQAmanager;\r
-class AliHFEsecVtx;\r
-class AliHFEsignalCuts;\r
-class AliHFEvarManager;\r
-class AliHFEtaggedTrackAnalysis;\r
-class AliCFManager;\r
-class AliMCEvent;\r
-class AliOADBContainer;\r
-class AliAODMCHeader;\r
-class AliVEvent;\r
-class AliVParticle;\r
-class AliTriggerAnalysis;\r
-class TH1I; \r
-class TList;\r
-class TClonesArray;\r
-\r
-class AliAnalysisTaskHFE : public AliAnalysisTaskSE{\r
- public:\r
- enum{\r
- kPIDqa = 0,\r
- kMCqa =1 \r
- };\r
- enum{\r
- kPriVtx = 0,\r
- kSecVtx = 1,\r
- kIsElecBackGround = 2,\r
- kPostProcess = 3,\r
- kDEstep = 4,\r
- kTaggedTrackAnalysis = 5,\r
- kNonPhotonicElectron = 6\r
- };\r
- enum CreationProcess_t{\r
- kSignalCharm = 0,\r
- kSignalBeauty = 1,\r
- kGammaConv = 2,\r
- kOther = 3\r
- };\r
- enum{\r
- kBgPtBins = 44,\r
- kElecBgSpecies = 6,\r
- kCentBins = 11,\r
- kBgLevels = 3\r
- };\r
- typedef enum{\r
- kpp = 0,\r
- kpPb = 1,\r
- kPbPb = 2\r
- } ECollisionSystem_t;\r
-\r
- AliAnalysisTaskHFE();\r
- AliAnalysisTaskHFE(const char * name);\r
- AliAnalysisTaskHFE(const AliAnalysisTaskHFE &ref);\r
- AliAnalysisTaskHFE& operator=(const AliAnalysisTaskHFE &ref);\r
- virtual void Copy(TObject &o) const;\r
- virtual ~AliAnalysisTaskHFE();\r
-\r
- virtual void UserCreateOutputObjects();\r
- virtual void UserExec(Option_t *);\r
- virtual void Terminate(Option_t *);\r
-\r
- virtual Bool_t IsEventInBinZero();\r
-\r
- Bool_t IsQAOn(Int_t qaLevel) const { return TESTBIT(fQAlevel, qaLevel); };\r
- Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };\r
- Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); };\r
- Bool_t HasMCData() const { return TestBit(kHasMCdata); }\r
- Bool_t Ispp() const { return fCollisionSystem.TestBitNumber(kpp); }\r
- Bool_t IsPbPb() const { return fCollisionSystem.TestBitNumber(kPbPb); }\r
- Bool_t IspPb() const { return fCollisionSystem.TestBitNumber(kpPb); }\r
- Bool_t IsHeavyIon() const { return IsPbPb() || IspPb(); }\r
- Bool_t GetPlugin(Int_t plug) const { return TESTBIT(fPlugins, plug); };\r
-\r
- // Get Components for configuration\r
- AliHFEvarManager *GetVarManager() const { return fVarManager; }\r
- AliHFEpidQAmanager *GetPIDQAManager() const { return fPIDqa; }\r
- AliHFEpid *GetPID() const { return fPID; }\r
- AliHFENonPhotonicElectron *GetHFEBackgroundSubtraction() const { return fBackgroundSubtraction; }\r
-\r
- void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };\r
- void SetTaggedTrackCuts(AliHFEcuts * const cuts) { fTaggedTrackCuts = cuts; }\r
- void SetCleanTaggedTrack(Bool_t clean) { fCleanTaggedTrack = clean; };\r
- void SetVariablesTRDTaggedTrack(Bool_t variablesTRD) { fVariablesTRDTaggedTrack = variablesTRD; };\r
- void SetHFECutsPreselect(AliESDtrackCuts * const cuts) { fCutspreselect = cuts; };\r
- void SetHFEElecBackGround(AliHFEelecbackground * const elecBackGround) { fElecBackGround = elecBackGround; };\r
- void SetHFEBackgroundSubtraction(AliHFENonPhotonicElectron * const backgroundSubtraction) { fBackgroundSubtraction = backgroundSubtraction; };\r
- void SetQAOn(Int_t qaLevel) { SETBIT(fQAlevel, qaLevel); };\r
- void SwitchOnPlugin(Int_t plug);\r
- void SetHasMCData(Bool_t hasMC = kTRUE) { SetBit(kHasMCdata, hasMC); };\r
- void SetFillSignalOnly(Bool_t signalOnly) { fFillSignalOnly = signalOnly; }\r
- \r
- void SetFillNoCuts(Bool_t fillNoCuts) { fFillNoCuts = fillNoCuts; }\r
- void SetApplyCutAOD(Bool_t applyCutAOD) { fApplyCutAOD = applyCutAOD; }\r
- void SetRemovePileUp(Bool_t removePileUp) { fRemovePileUp = removePileUp; }\r
- void SetRemoveFirstEventInChunk() {fRemoveFirstEvent = kTRUE;}\r
- void SetPIDPreselect(AliHFEpid * const cuts) { fPIDpreselect = cuts; };\r
- void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };\r
- void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };\r
- void SetTRDTrigger(Bool_t activateTRDTrigger, Int_t trdtrigger) {fTRDTrigger=activateTRDTrigger; fWhichTRDTrigger=trdtrigger;};\r
- void SetCollisionSystem(ECollisionSystem_t system){\r
- fCollisionSystem.Clear();\r
- fCollisionSystem.SetBitNumber(system, kTRUE);\r
- }\r
- void SetppAnalysis(){\r
- fCollisionSystem.SetBitNumber(kpPb, kFALSE); \r
- fCollisionSystem.SetBitNumber(kPbPb, kFALSE); \r
- fCollisionSystem.SetBitNumber(kpp, kTRUE); \r
- }\r
- void SetpPbAnalysis() {\r
- fCollisionSystem.SetBitNumber(kpp, kFALSE); \r
- fCollisionSystem.SetBitNumber(kPbPb, kFALSE); \r
- fCollisionSystem.SetBitNumber(kpPb, kTRUE); \r
- }\r
- void SetPbPbAnalysis() { \r
- fCollisionSystem.SetBitNumber(kpp, kFALSE); \r
- fCollisionSystem.SetBitNumber(kpPb, kFALSE); \r
- fCollisionSystem.SetBitNumber(kPbPb, kTRUE); \r
- };\r
- void SetCentralityEstimator(const char *estimator) { fCentralityEstimator = estimator; }\r
- void SetPbPbUserCentralityLimit(Bool_t isPbPbUserBinning = kFALSE){fPbPbUserCentralityBinning = isPbPbUserBinning; };\r
- void SetPbPbUserCentralityArray(Int_t icentr, Float_t valuecentr) {fCentralityLimits[icentr] = valuecentr;};\r
- void SetPPMultiBinAnalysis(Bool_t isppMultiBin) { fisppMultiBin = isppMultiBin; };\r
- void SetNonHFEsystematics(Bool_t isSystematics) {fisNonHFEsystematics = isSystematics; };\r
- void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };\r
- void SetBackGroundFactorsFunction(const TF1 * const backGroundFactorsFunction, Int_t centralitybin=0){ \r
- fkBackGroundFactorArray[centralitybin]=backGroundFactorsFunction;\r
- fBackGroundFactorApply=kTRUE;\r
- SetBit(kBackgroundInitialized);\r
- };\r
- void SetElecBackGroundFactors(Int_t iPt, Int_t iType, Int_t iCent, Int_t iError, Double_t elecBackGroundFactor) {fElecBackgroundFactor[iError][iCent][iType][iPt] = elecBackGroundFactor; };\r
- void SetBinLimits(Int_t iPt, Double_t momentum){fBinLimit[iPt] = momentum;};\r
- void PrintStatus() const;\r
- Bool_t ReadCentrality();\r
- void RejectionPileUpVertexRangeEventCut(); \r
- void SelectSpecialTrigger(const Char_t *trgclust, Int_t runMin = 0, Int_t runMax = 999999999); \r
- void SetDebugStreaming() {SetBit(kTreeStream);};\r
- Bool_t CheckTRDTrigger(AliESDEvent *ev);\r
+/**************************************************************************
+* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+* *
+* Author: The ALICE Off-line Project. *
+* Contributors are mentioned in the code where appropriate. *
+* *
+* Permission to use, copy, modify and distribute this software and its *
+* documentation strictly for non-commercial purposes is hereby granted *
+* without fee, provided that the above copyright notice appears in all *
+* copies and that both the copyright notice and this permission notice *
+* appear in the supporting documentation. The authors make no claims *
+* about the suitability of this software for any purpose. It is *
+* provided "as is" without express or implied warranty. *
+**************************************************************************/
+//
+// Task for Heavy Flavour Electron Analysis
+// Fills a single-inclusive electron pt-spectrum
+// For further information see implementation file
+//
+#ifndef ALIANALYSISTASKHFE_H
+#define ALIANALYSISTASKHFE_H
+
+#ifndef ALIANALYSISTASKSE_H
+#include "AliAnalysisTaskSE.h"
+#endif
+
+#ifndef ROOT_TString
+#include <TString.h>
+#endif
+
+#ifndef ROOT_TBits
+#include <TBits.h>
+#endif
+
+class AliAnalysisUtils;
+class AliESDtrackCuts;
+class AliHFEcontainer;
+class AliHFEcollection;
+class AliHFEcuts;
+class AliHFEextraCuts;
+class AliHFEelecbackground;
+class AliHFENonPhotonicElectron;
+class AliHFEmcQA;
+class AliHFEpid;
+class AliHFEpidQAmanager;
+class AliHFEsecVtx;
+class AliHFEsignalCuts;
+class AliHFEvarManager;
+class AliHFEtaggedTrackAnalysis;
+class AliHFEV0taginfo;
+class AliCFManager;
+class AliMCEvent;
+class AliOADBContainer;
+class AliAODMCHeader;
+class AliVEvent;
+class AliVParticle;
+class AliTriggerAnalysis;
+class AliTRDTriggerAnalysis;
+class TH1I;
+class TList;
+class TClonesArray;
+
+class AliAnalysisTaskHFE : public AliAnalysisTaskSE{
+ public:
+ enum{
+ kPIDqa = 0,
+ kMCqa =1
+ };
+ enum{
+ kPriVtx = 0,
+ kSecVtx = 1,
+ kIsElecBackGround = 2,
+ kPostProcess = 3,
+ kDEstep = 4,
+ kTaggedTrackAnalysis = 5,
+ kNonPhotonicElectron = 6
+ };
+ enum CreationProcess_t{
+ kSignalCharm = 0,
+ kSignalBeauty = 1,
+ kGammaConv = 2,
+ kOther = 3
+ };
+ enum{
+ kBgPtBins = 44,
+ kElecBgSpecies = 6,
+ kCentBins = 11,
+ kBgLevels = 3
+ };
+ typedef enum{
+ kpp = 0,
+ kpPb = 1,
+ kPbPb = 2
+ } ECollisionSystem_t;
+
+ AliAnalysisTaskHFE();
+ AliAnalysisTaskHFE(const char * name);
+ AliAnalysisTaskHFE(const AliAnalysisTaskHFE &ref);
+ AliAnalysisTaskHFE& operator=(const AliAnalysisTaskHFE &ref);
+ virtual void Copy(TObject &o) const;
+ virtual ~AliAnalysisTaskHFE();
+
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *);
+ virtual void Terminate(Option_t *);
+
+ virtual Bool_t IsEventInBinZero();
+
+ Bool_t IsQAOn(Int_t qaLevel) const { return TESTBIT(fQAlevel, qaLevel); };
+ Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };
+ Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); };
+ Bool_t HasMCData() const { return TestBit(kHasMCdata); }
+ Bool_t Ispp() const { return fCollisionSystem.TestBitNumber(kpp); }
+ Bool_t IsPbPb() const { return fCollisionSystem.TestBitNumber(kPbPb); }
+ Bool_t IspPb() const { return fCollisionSystem.TestBitNumber(kpPb); }
+ Bool_t IsHeavyIon() const { return IsPbPb(); }
+ Bool_t GetPlugin(Int_t plug) const { return TESTBIT(fPlugins, plug); };
+
+ // Get Components for configuration
+ AliHFEvarManager *GetVarManager() const { return fVarManager; }
+ AliHFEpidQAmanager *GetPIDQAManager() const { return fPIDqa; }
+ AliHFEpid *GetPID() const { return fPID; }
+ AliHFENonPhotonicElectron *GetHFEBackgroundSubtraction() const { return fBackgroundSubtraction; }
+
+ void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
+ void SetTaggedTrackCuts(AliHFEcuts * const cuts) { fTaggedTrackCuts = cuts; }
+ void SetCleanTaggedTrack(Bool_t clean) { fCleanTaggedTrack = clean; };
+ void SetVariablesTRDTaggedTrack(Bool_t variablesTRD) { fVariablesTRDTaggedTrack = variablesTRD; };
+ void SetHFECutsPreselect(AliESDtrackCuts * const cuts) { fCutspreselect = cuts; };
+ void SetHFEElecBackGround(AliHFEelecbackground * const elecBackGround) { fElecBackGround = elecBackGround; };
+ void SetHFEBackgroundSubtraction(AliHFENonPhotonicElectron * const backgroundSubtraction) { fBackgroundSubtraction = backgroundSubtraction; };
+ void SetQAOn(Int_t qaLevel) { SETBIT(fQAlevel, qaLevel); };
+ void SwitchOnPlugin(Int_t plug);
+ void SetHasMCData(Bool_t hasMC = kTRUE) { SetBit(kHasMCdata, hasMC); };
+ void SetFillSignalOnly(Bool_t signalOnly) { fFillSignalOnly = signalOnly; }
+
+ void SetFillNoCuts(Bool_t fillNoCuts) { fFillNoCuts = fillNoCuts; }
+ void SetApplyCutAOD(Bool_t applyCutAOD) { fApplyCutAOD = applyCutAOD; }
+ void SetRemovePileUp(Bool_t removePileUp) { fRemovePileUp = removePileUp; }
+ void SetRemoveFirstEventInChunk() {fRemoveFirstEvent = kTRUE;}
+ void SetPIDPreselect(AliHFEpid * const cuts) { fPIDpreselect = cuts; };
+ void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };
+ void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };
+ void SetTRDTrigger(Bool_t activateTRDTrigger, Int_t trdtrigger) {fTRDTrigger=activateTRDTrigger; fWhichTRDTrigger=trdtrigger;};
+ void SetCollisionSystem(ECollisionSystem_t system){
+ fCollisionSystem.Clear();
+ fCollisionSystem.SetBitNumber(system, kTRUE);
+ }
+ void SetppAnalysis(){
+ fCollisionSystem.SetBitNumber(kpPb, kFALSE);
+ fCollisionSystem.SetBitNumber(kPbPb, kFALSE);
+ fCollisionSystem.SetBitNumber(kpp, kTRUE);
+ }
+ void SetpPbAnalysis() {
+ fCollisionSystem.SetBitNumber(kpp, kFALSE);
+ fCollisionSystem.SetBitNumber(kPbPb, kFALSE);
+ fCollisionSystem.SetBitNumber(kpPb, kTRUE);
+ }
+ void SetPbPbAnalysis() {
+ fCollisionSystem.SetBitNumber(kpp, kFALSE);
+ fCollisionSystem.SetBitNumber(kpPb, kFALSE);
+ fCollisionSystem.SetBitNumber(kPbPb, kTRUE);
+ };
+ void SetCentralityEstimator(const char *estimator) { fCentralityEstimator = estimator; }
+ void SetPbPbUserCentralityLimit(Bool_t isPbPbUserBinning = kFALSE){fPbPbUserCentralityBinning = isPbPbUserBinning; };
+ void SetPbPbUserCentralityArray(Int_t icentr, Float_t valuecentr) {fCentralityLimits[icentr] = valuecentr;};
+ void SetPPMultiBinAnalysis(Bool_t isppMultiBin) { fisppMultiBin = isppMultiBin; };
+ void SetNonHFEsystematics(Bool_t isSystematics) {fisNonHFEsystematics = isSystematics; };
+ void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };
+ void SetBackGroundFactorsFunction(const TF1 * const backGroundFactorsFunction, Int_t centralitybin=0){
+ fkBackGroundFactorArray[centralitybin]=backGroundFactorsFunction;
+ fBackGroundFactorApply=kTRUE;
+ SetBit(kBackgroundInitialized);
+ };
+ void SetElecBackGroundFactors(Int_t iPt, Int_t iType, Int_t iCent, Int_t iError, Double_t elecBackGroundFactor) {fElecBackgroundFactor[iError][iCent][iType][iPt] = elecBackGroundFactor; };
+ void SetBinLimits(Int_t iPt, Double_t momentum){fBinLimit[iPt] = momentum;};
+ void PrintStatus() const;
+ Bool_t ReadCentrality();
+ void RejectionPileUpVertexRangeEventCut();
+ void SelectSpecialTrigger(const Char_t *trgclust, Int_t runMin = 0, Int_t runMax = 999999999);
+ void SetDebugStreaming() {SetBit(kTreeStream);};
+ Bool_t CheckTRDTriggerESD(AliESDEvent *ev);
+ Bool_t CheckTRDTrigger(AliVEvent *ev);
void DrawTRDTrigger(AliESDEvent *ev);
-\r
- private:\r
- enum{\r
- kHasMCdata = BIT(19),\r
- kAODanalysis = BIT(20),\r
- kBackgroundInitialized = BIT(21),\r
- kTreeStream = BIT(22)\r
- };\r
-\r
- Bool_t FillProductionVertex(const AliVParticle * const track) const;\r
- void MakeParticleContainer();\r
- void MakeEventContainer();\r
- void InitHistoITScluster();\r
- void InitContaminationQA();\r
- const Char_t *GetSpecialTrigger(Int_t run);\r
- void ProcessMC();\r
- void ProcessESD();\r
- void ProcessAOD();\r
- Int_t GetITSMultiplicity(AliVEvent *ev);\r
- Bool_t PreSelectTrack(AliESDtrack *track) const;\r
- Bool_t ProcessMCtrack(AliVParticle *track);\r
- Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);\r
- AliAODMCHeader *fAODMCHeader; // ! MC info AOD\r
- TClonesArray *fAODArrayMCInfo; // ! MC info particle AOD\r
- ULong_t fQAlevel; // QA level\r
- UShort_t fPlugins; // Enabled Plugins\r
- TBits fCollisionSystem; // Collision System;\r
- Bool_t fFillSignalOnly; // Fill container only with MC Signal Tracks\r
- Bool_t fFillNoCuts; // Fill container before any cut\r
- Bool_t fApplyCutAOD; // Apply the analysis cut for AOD tracks\r
- Bool_t fBackGroundFactorApply; // Apply Background Function Subtraction, MF: To be removed when transition to OADB container is finished\r
- Bool_t fRemovePileUp; // Remove Pile Up\r
- Bool_t fIdentifiedAsPileUp; // Identified as pile-up\r
- Bool_t fIdentifiedAsOutInz; // Out Of Range in z\r
- Bool_t fPassTheEventCut; // Pass The Event Cut\r
- Bool_t fRejectKinkMother; // Reject Kink Mother\r
- Bool_t fisppMultiBin; // pp Multiplicity Bin analysis\r
- Bool_t fPbPbUserCentralityBinning; // PbPb user centrality binning\r
- Bool_t fRemoveFirstEvent; // Remove first event from chunk\r
- Bool_t fisNonHFEsystematics; // Non-HFE background systematics analysis\r
- AliOADBContainer *fSpecialTrigger; // Special trigger selection\r
- Int_t fCentralityF; // Centrality bin\r
- Float_t fCentralityPercent; // Centrality percentile\r
- TString fCentralityEstimator; // Centrality Estimator\r
- Float_t fContributors; // Contributors\r
- Double_t fWeightBackGround; // weight background function\r
- Double_t fVz; // z position of the primary vertex\r
- const TF1 *fkBackGroundFactorArray[12]; // Array of BackGround factors for each centrality bin, bin0 = min bias\r
- Double_t fElecBackgroundFactor[kBgLevels][kCentBins][kElecBgSpecies][kBgPtBins]; // Electron background factors\r
- Double_t fBinLimit[kBgPtBins+1]; // Electron pt bin edges\r
- Float_t fCentralityLimits[12]; // Limits for centrality bins\r
- AliHFEcontainer *fContainer; //! The HFE container\r
- AliHFEvarManager *fVarManager; // The var manager as the backbone of the analysis\r
- AliHFEsignalCuts *fSignalCuts; //! MC true signal (electron coming from certain source) \r
- AliCFManager *fCFM; //! Correction Framework Manager\r
- AliTriggerAnalysis *fTriggerAnalysis; //! Trigger Analysis for Normalisation\r
- AliHFEpid *fPID; // PID\r
- AliHFEpidQAmanager *fPIDqa; // PID QA\r
- AliHFEpid *fPIDpreselect; // PID oject for pre-selected tracks (without QA)\r
- AliHFEcuts *fCuts; // Cut Collection\r
- AliHFEcuts *fTaggedTrackCuts; // Cut Collection for V0 tagged tracks\r
- Bool_t fCleanTaggedTrack; // Loose cleaning of the V0 tagged tracks electron\r
- Bool_t fVariablesTRDTaggedTrack; // Take the variables at the TRD for the V0 tagged tracks electron\r
- AliAnalysisUtils *fAnalysisUtils; // Utility object to remove the first event of a chunk from the analysis\r
- AliESDtrackCuts *fCutspreselect; // Cut Collection for pre-selected tracks\r
- AliHFEsecVtx *fSecVtx; //! Secondary Vertex Analysis\r
- AliHFEelecbackground *fElecBackGround;//! Background analysis\r
- AliHFEmcQA *fMCQA; //! MC QA\r
- AliHFEtaggedTrackAnalysis *fTaggedTrackAnalysis; //!Analyse V0-tagged tracks\r
- AliHFEextraCuts *fExtraCuts; //! temporary implementation for IP QA\r
- AliHFENonPhotonicElectron *fBackgroundSubtraction; // Background subtraction\r
- Bool_t fTRDTrigger; // Check if event is TRD triggered event\r
- Int_t fWhichTRDTrigger; // Select type of TRD trigger\r
- //-----------QA and output---------------\r
- TList *fQA; //! QA histos for the cuts\r
- TList *fOutput; //! Container for Task Output\r
- TList *fHistMCQA; //! Output container for MC QA histograms \r
- TList *fHistSECVTX; //! Output container for sec. vertexing results\r
- TList *fHistELECBACKGROUND; //! Output container for electron background analysis\r
- AliHFEcollection *fQACollection; //! Tasks own QA collection\r
- //---------------------------------------\r
-\r
- ClassDef(AliAnalysisTaskHFE, 2) // The electron Analysis Task\r
-};\r
-#endif\r
-\r
+
+ private:
+ enum{
+ kHasMCdata = BIT(19),
+ kAODanalysis = BIT(20),
+ kBackgroundInitialized = BIT(21),
+ kTreeStream = BIT(22)
+ };
+
+ Bool_t FillProductionVertex(const AliVParticle * const track) const;
+ void MakeParticleContainer();
+ void MakeEventContainer();
+ void InitHistoITScluster();
+ void InitContaminationQA();
+ const Char_t *GetSpecialTrigger(Int_t run);
+ void ProcessMC();
+ void ProcessESD();
+ void ProcessAOD();
+ Int_t GetITSMultiplicity(AliVEvent *ev);
+ Bool_t PreSelectTrack(AliESDtrack *track) const;
+ Bool_t ProcessMCtrack(AliVParticle *track);
+ Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
+ AliAODMCHeader *fAODMCHeader; // ! MC info AOD
+ TClonesArray *fAODArrayMCInfo; // ! MC info particle AOD
+ ULong_t fQAlevel; // QA level
+ UShort_t fPlugins; // Enabled Plugins
+ TBits fCollisionSystem; // Collision System;
+ Bool_t fFillSignalOnly; // Fill container only with MC Signal Tracks
+ Bool_t fFillNoCuts; // Fill container before any cut
+ Bool_t fApplyCutAOD; // Apply the analysis cut for AOD tracks
+ Bool_t fBackGroundFactorApply; // Apply Background Function Subtraction, MF: To be removed when transition to OADB container is finished
+ Bool_t fRemovePileUp; // Remove Pile Up
+ Bool_t fIdentifiedAsPileUp; // Identified as pile-up
+ Bool_t fIdentifiedAsOutInz; // Out Of Range in z
+ Bool_t fPassTheEventCut; // Pass The Event Cut
+ Bool_t fRejectKinkMother; // Reject Kink Mother
+ Bool_t fisppMultiBin; // pp Multiplicity Bin analysis
+ Bool_t fPbPbUserCentralityBinning; // PbPb user centrality binning
+ Bool_t fRemoveFirstEvent; // Remove first event from chunk
+ Bool_t fisNonHFEsystematics; // Non-HFE background systematics analysis
+ AliOADBContainer *fSpecialTrigger; // Special trigger selection
+ Int_t fCentralityF; // Centrality bin
+ Float_t fCentralityPercent; // Centrality percentile
+ TString fCentralityEstimator; // Centrality Estimator
+ Float_t fContributors; // Contributors
+ Double_t fWeightBackGround; // weight background function
+ Double_t fVz; // z position of the primary vertex
+ const TF1 *fkBackGroundFactorArray[12]; // Array of BackGround factors for each centrality bin, bin0 = min bias
+ Double_t fElecBackgroundFactor[kBgLevels][kCentBins][kElecBgSpecies][kBgPtBins]; // Electron background factors
+ Double_t fBinLimit[kBgPtBins+1]; // Electron pt bin edges
+ Float_t fCentralityLimits[12]; // Limits for centrality bins
+ AliHFEcontainer *fContainer; //! The HFE container
+ AliHFEvarManager *fVarManager; // The var manager as the backbone of the analysis
+ AliHFEsignalCuts *fSignalCuts; //! MC true signal (electron coming from certain source)
+ AliCFManager *fCFM; //! Correction Framework Manager
+ AliTriggerAnalysis *fTriggerAnalysis; //! Trigger Analysis for Normalisation
+ AliHFEpid *fPID; // PID
+ AliHFEpidQAmanager *fPIDqa; // PID QA
+ AliTRDTriggerAnalysis *fTRDTriggerAnalysis; //! TRD Trigger Analysis
+ AliHFEpid *fPIDpreselect; // PID oject for pre-selected tracks (without QA)
+ AliHFEcuts *fCuts; // Cut Collection
+ AliHFEcuts *fTaggedTrackCuts; // Cut Collection for V0 tagged tracks
+ Bool_t fCleanTaggedTrack; // Loose cleaning of the V0 tagged tracks electron
+ Bool_t fVariablesTRDTaggedTrack; // Take the variables at the TRD for the V0 tagged tracks electron
+ AliAnalysisUtils *fAnalysisUtils; // Utility object to remove the first event of a chunk from the analysis
+ AliESDtrackCuts *fCutspreselect; // Cut Collection for pre-selected tracks
+ AliHFEsecVtx *fSecVtx; //! Secondary Vertex Analysis
+ AliHFEelecbackground *fElecBackGround;//! Background analysis
+ AliHFEmcQA *fMCQA; //! MC QA
+ AliHFEtaggedTrackAnalysis *fTaggedTrackAnalysis; //!Analyse V0-tagged tracks
+ AliHFEextraCuts *fExtraCuts; //! temporary implementation for IP QA
+ AliHFENonPhotonicElectron *fBackgroundSubtraction; // Background subtraction
+ Bool_t fTRDTrigger; // Check if event is TRD triggered event
+ Int_t fWhichTRDTrigger; // Select type of TRD trigger
+
+ AliHFEV0taginfo *fV0Tagger; // Tags v0 tracks per Event
+
+ //-----------QA and output---------------
+ TList *fQA; //! QA histos for the cuts
+ TList *fOutput; //! Container for Task Output
+ TList *fHistMCQA; //! Output container for MC QA histograms
+ TList *fHistSECVTX; //! Output container for sec. vertexing results
+ TList *fHistELECBACKGROUND; //! Output container for electron background analysis
+ AliHFEcollection *fQACollection; //! Tasks own QA collection
+ //---------------------------------------
+
+ ClassDef(AliAnalysisTaskHFE, 2) // The electron Analysis Task
+};
+#endif
+