+#ifndef ALIANALYSISTASKHFE_H
+#define ALIANALYSISTASKHFE_H
+
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-#ifndef ALIANALYSISTASKHFE_H
-#define ALIANALYSISTASKHFE_H
-#include "AliAnalysisTask.h"
+/* $Id$ */
-class AliHFEpid;
+//
+// Task for Heavy Flavour Electron Analysis
+// Fills a single-inclusive electron pt-spectrum
+// For further information see implementation file
+//
+#ifndef ALIANALYSISTASKSE_H
+#include "AliAnalysisTaskSE.h"
+#endif
+
+class AliHFEcontainer;
+class AliHFEcollection;
class AliHFEcuts;
+class AliHFEelecbackground;
class AliHFEmcQA;
+class AliHFEpid;
+class AliHFEpidQAmanager;
class AliHFEsecVtx;
+class AliHFEsignalCuts;
+class AliHFEvarManager;
+class AliHFEtaggedTrackAnalysis;
class AliCFManager;
-class AliESDEvent;
-class AliESDtrackCuts;
+class AliVEvent;
class AliMCEvent;
+class AliVParticle;
+class AliTriggerAnalysis;
class TH1I;
-class THnSparse;
class TList;
-class AliAnalysisTaskHFE : public AliAnalysisTask{
- enum{
- kIsQAOn = BIT(14),
- kIsMCQAOn = BIT(15),
- kIsSecVtxOn = BIT(16)
- };
- public:
- AliAnalysisTaskHFE();
- ~AliAnalysisTaskHFE();
+class AliAnalysisTaskHFE : public AliAnalysisTaskSE{
+ public:
+ enum{
+ kPIDqa = 0,
+ kMCqa =1
+ };
+ enum{
+ kPriVtx = 0,
+ kSecVtx = 1,
+ kIsElecBackGround = 2,
+ kPostProcess = 3,
+ kDEstep = 4,
+ kTaggedTrackAnalysis = 5
+ };
+ enum CreationProcess_t{
+ kSignalCharm = 0,
+ kSignalBeauty = 1,
+ kGammaConv = 2,
+ kOther = 3
+ };
+ AliAnalysisTaskHFE();
+ AliAnalysisTaskHFE(const char * name);
+ AliAnalysisTaskHFE(const AliAnalysisTaskHFE &ref);
+ AliAnalysisTaskHFE& operator=(const AliAnalysisTaskHFE &ref);
+ virtual void Copy(TObject &o) const;
+ virtual ~AliAnalysisTaskHFE();
- virtual void ConnectInputData(Option_t *);
- virtual void CreateOutputObjects();
- virtual void Exec(Option_t *);
- virtual void Terminate(Option_t *);
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *);
+ virtual void Terminate(Option_t *);
- Bool_t IsQAOn() const { return TestBit(kIsQAOn); };
- Bool_t IsMCQAOn() const { return TestBit(kIsMCQAOn); }
- Bool_t IsSecVtxOn() const { return TestBit(kIsSecVtxOn); };
- void SetQAOn() { SetBit(kIsQAOn, kTRUE); };
- void SetMCQAOn() { SetBit(kIsMCQAOn, kTRUE); };
- void SetSecVtxOn() { SetBit(kIsSecVtxOn, kTRUE); };
+ virtual Bool_t IsEventInBinZero();
- private:
- void MakeParticleContainer();
+ 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 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; }
+
+ 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(AliHFEcuts * const cuts) { fCutspreselect = cuts; };
+ void SetHFEElecBackGround(AliHFEelecbackground * const elecBackGround) { fElecBackGround = elecBackGround; };
+ 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 SetRemovePileUp(Bool_t removePileUp) { fRemovePileUp = removePileUp; }
+ void SetPIDPreselect(AliHFEpid * const cuts) { fPIDpreselect = cuts; };
+ void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };
+ void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };
+ void SetBackGroundFactorsFunction(TF1 * const backGroundFactorsFunction) { fBackGroundFactorsFunction = backGroundFactorsFunction; };
+ void PrintStatus() const;
+ void ReadCentrality();
+ void RejectionPileUpVertexRangeEventCut();
+
+ private:
+ enum{
+ kHasMCdata = BIT(19),
+ kAODanalysis = BIT(20)
+ };
- AliESDEvent *fESD; //! The ESD Event
- AliMCEvent *fMC; //! The MC Event
- AliCFManager *fCFM; //! Correction Framework Manager
- THnSparseF *fCorrelation; //! response matrix for unfolding
- THnSparseF *fFakeElectrons; //! Contamination from Fake Electrons
- AliHFEpid *fPID; //! PID
- AliHFEcuts *fCuts; //! Cut Collection
+ Bool_t FillProductionVertex(const AliVParticle * const track) const;
+ void MakeParticleContainer();
+ void MakeEventContainer();
+ void InitPIDperformanceQA();
+ void InitContaminationQA();
+ void ProcessMC();
+ void ProcessESD();
+ void ProcessAOD();
+ Bool_t PreSelectTrack(AliESDtrack *track) const;
+ Bool_t ProcessMCtrack(AliVParticle *track);
+ Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
+ ULong_t fQAlevel; // QA level
+ UShort_t fPlugins; // Enabled Plugins
+ Bool_t fFillSignalOnly; // Fill container only with MC Signal Tracks
+ 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
+ Float_t fCentralityF; // Centrality
+ TF1 *fBackGroundFactorsFunction; // BackGround factors
+ 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
+ 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
+ AliHFEcuts *fCutspreselect; // Cut Collection for pre-selected tracks
AliHFEsecVtx *fSecVtx; //! Secondary Vertex Analysis
- AliHFEmcQA *fAnalysisMCQA; //! MC QA
- TH1I *fNEvents; //! counter for the number of Events
- TList *fQA; //! QA histos for the cuts
+ AliHFEelecbackground *fElecBackGround;//! Background analysis
+ AliHFEmcQA *fMCQA; //! MC QA
+ AliHFEtaggedTrackAnalysis *fTaggedTrackAnalysis; //!Analyse V0-tagged tracks
+
+ //-----------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, 1) // The electron Analysis Task
+ ClassDef(AliAnalysisTaskHFE, 2) // The electron Analysis Task
};
#endif
+