1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 // study displaced electrons from beauty and charm
18 // with cut on impact parameters in various pT bins
22 #ifndef ALIANALYSISTASKDISPLACEDELECTRONS_H
23 #define ALIANALYSISTASKDISPLACEDELECTRONS_H
25 #ifndef ALIANALYSISTASKSE_H
26 #include "AliAnalysisTaskSE.h"
29 #ifndef ROOT_THnSparse
30 #include <THnSparse.h>
40 class AliESDtrackCuts;
48 class AliHFEdisplacedElectrons;
50 class AliAnalysisTaskDisplacedElectrons : public AliAnalysisTaskSE{
55 kDisplacedElectrons = 1,
61 kAODanalysis = BIT(20)
64 AliAnalysisTaskDisplacedElectrons();
65 AliAnalysisTaskDisplacedElectrons(const char * name);
66 AliAnalysisTaskDisplacedElectrons(const AliAnalysisTaskDisplacedElectrons &ref);
67 AliAnalysisTaskDisplacedElectrons& operator=(const AliAnalysisTaskDisplacedElectrons &ref);
68 virtual ~AliAnalysisTaskDisplacedElectrons();
70 virtual void UserCreateOutputObjects();
71 virtual void UserExec(Option_t *);
72 // virtual void ConnectInputData(Option_t *);
73 virtual void Terminate(Option_t *);
75 void PrintStatus() const;
77 Bool_t GetPlugin(Int_t plug) const { return TESTBIT(fPlugins, plug); };
78 void SwitchOnPlugin(Int_t plug);
80 void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
82 void SetPIDdetectors(Char_t * const detectors){ fPIDdetectors = detectors; };
83 void SetPIDStrategy(UInt_t strategy) { fPIDstrategy = strategy; };
84 void SetDBLevel(UInt_t debugLevel) { fDebugLevel = debugLevel; };
85 void AddPIDdetector(TString detector);
87 Bool_t HasMCData() const { return TestBit(kHasMCdata); };
88 void SetHasMCData(Bool_t hasMC = kTRUE) { SetBit(kHasMCdata, hasMC); };
95 LabelContainer(Int_t capacity);
96 ~LabelContainer() {delete[] fContainer; };
98 Bool_t Append(Int_t label);
99 Bool_t Find(Int_t Label) const;
101 void ResetIterator(){ fCurrent = fBegin; }
104 LabelContainer(const LabelContainer &);
105 LabelContainer &operator=(const LabelContainer &);
106 Int_t *fContainer; // the Container for the labels
107 Int_t *fBegin; // Pointer to the first entry
108 Int_t *fEnd; // Pointer to the end of the container
109 Int_t *fLast; // Pointer to the last entry
110 Int_t *fCurrent; // Current entry to mimic an iterator
113 void MakeParticleContainer();
114 void MakeEventContainer();
116 UInt_t fDebugLevel; // debug level
118 TString fPIDdetectors; // Detectors for Particle Identification
119 UInt_t fPIDstrategy; // PID Strategy
122 UShort_t fPlugins; // Enabled Plugins
123 AliESDEvent *fESD; //! The ESD Event
124 AliMCEvent *fMC; //! The MC Event
126 AliHFEcuts *fCuts; // Cut Collection
127 AliHFEpid *fPID; // PID method
128 AliCFManager *fCFM; //! Correction Framework Manager
130 TH1I *fNEvents; //! counter for the number of Events
131 TH1F *fElectronsPt; //! pt distribution of electrons (hfepid)
132 TList *fOutput; //! Container for this Task Output
133 TList *fCorrection; //! Container for correction Output
134 AliHFEdisplacedElectrons *fDisplacedElectrons; //! HFE displaced Electrons pointer
135 TList *fHistDisplacedElectrons; //! list of outputs
137 ClassDef(AliAnalysisTaskDisplacedElectrons, 1); // The DisplacedElectrons Analysis Task