-#ifndef ALIANALYSISTASKESDFILTER_H\r
-#define ALIANALYSISTASKESDFILTER_H\r
- \r
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice */\r
-\r
-/* $Id: AliAnalysisTaskESDfilter.h 24429 2008-03-12 10:27:50Z jgrosseo $ */\r
-\r
-#include <TList.h> \r
-#include <TF1.h> \r
-#include "AliAnalysisTaskSE.h"\r
-#include "AliESDtrack.h"\r
-#include "AliAODTrack.h"\r
-#include "AliAODPid.h"\r
-#include "AliESDpid.h"\r
-\r
-class AliAnalysisFilter;\r
-class AliStack;\r
-class AliESDtrack;\r
-\r
-class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE\r
-{\r
- public:\r
- AliAnalysisTaskESDfilter();\r
- AliAnalysisTaskESDfilter(const char* name);\r
- virtual ~AliAnalysisTaskESDfilter() {;}\r
- // Implementation of interface methods\r
- virtual void UserCreateOutputObjects();\r
- virtual void Init();\r
- virtual void LocalInit() {Init();}\r
- virtual void UserExec(Option_t *option);\r
- virtual void Terminate(Option_t *option);\r
-\r
- virtual void ConvertESDtoAOD();\r
- // Setters\r
- virtual void SetTrackFilter (AliAnalysisFilter* trackF) {fTrackFilter = trackF;}\r
- virtual void SetTPCOnlyFilterMask (UInt_t filterMask) {fTPCOnlyFilterMask = filterMask;}\r
- virtual void SetKinkFilter (AliAnalysisFilter* KinkF) {fKinkFilter = KinkF;}\r
- virtual void SetV0Filter (AliAnalysisFilter* V0F) {fV0Filter = V0F;}\r
- virtual void SetCascadeFilter (AliAnalysisFilter* CascadeF) {fCascadeFilter = CascadeF;}\r
- virtual void SetPthreshold (Double_t p) {fHighPthreshold = p;}\r
- virtual void SetPshape (TF1 *func) {fPtshape = func;}\r
- virtual void SetEnableFillAOD (Bool_t b) {fEnableFillAOD = b;}\r
-\r
- virtual void SetAODPID(AliESDtrack *esdtrack, AliAODTrack *aodtrack, AliAODPid *detpid, Double_t bfield, AliESDpid *esdpid);\r
- void SetDetectorRawSignals(AliAODPid *aodpid, AliESDtrack *track, Double_t bfield, AliESDpid *esdpid);\r
-\r
- virtual void SetTimeZeroType(AliESDpid::EStartTimeType_t tofTimeZeroType) {fTimeZeroType = tofTimeZeroType;}\r
-\r
- private:\r
- AliAnalysisTaskESDfilter(const AliAnalysisTaskESDfilter&);\r
- AliAnalysisTaskESDfilter& operator=(const AliAnalysisTaskESDfilter&);\r
- void PrintMCInfo(AliStack *pStack,Int_t label); // for debugging\r
- Double_t Chi2perNDF(AliESDtrack* track);\r
- \r
- // Filtering\r
- AliAnalysisFilter* fTrackFilter; // Track Filter\r
- AliAnalysisFilter* fKinkFilter; // Kink Filter\r
- AliAnalysisFilter* fV0Filter; // V0 Filter\r
- AliAnalysisFilter* fCascadeFilter; // Cascade Filter\r
- UInt_t fTPCOnlyFilterMask;// Fitler Mask used to select and store refitted TPC only tracks\r
-\r
-\r
- // PID\r
- Double_t fHighPthreshold; // Pt threshold for detector signal setting\r
- TF1 * fPtshape; // Pt spectrum distribution\r
- Bool_t fEnableFillAOD; // value that decides if this task activates AOD filling\r
- Int_t fTimeZeroType; // time zero type \r
-\r
- ClassDef(AliAnalysisTaskESDfilter, 6); // Analysis task for standard ESD filtering\r
-};\r
- \r
-#endif\r
+#ifndef ALIANALYSISTASKESDFILTER_H
+#define ALIANALYSISTASKESDFILTER_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id$ */
+
+#include <TList.h>
+#include <TF1.h>
+#include "AliAnalysisTaskSE.h"
+#include "AliESDtrack.h"
+#include "AliAODTrack.h"
+#include "AliAODPid.h"
+#include "AliESDpid.h"
+
+class AliAnalysisFilter;
+class AliStack;
+class AliESDtrack;
+class AliMCEventHandler;
+class TRefArray;
+class AliAODHeader;
+
+class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE
+{
+ public:
+ AliAnalysisTaskESDfilter();
+ AliAnalysisTaskESDfilter(const char* name);
+ virtual ~AliAnalysisTaskESDfilter() {;}
+ // Implementation of interface methods
+ virtual void UserCreateOutputObjects();
+ virtual void Init();
+ virtual void LocalInit() {Init();}
+ virtual void UserExec(Option_t *option);
+ virtual void Terminate(Option_t *option);
+
+ virtual void ConvertESDtoAOD();
+ // Setters
+ virtual void SetTrackFilter (AliAnalysisFilter* trackF) {fTrackFilter = trackF;}
+ virtual void SetTPCOnlyFilterMask (UInt_t filterMask) {fTPCOnlyFilterMask = filterMask;}
+ virtual void SetKinkFilter (AliAnalysisFilter* KinkF) {fKinkFilter = KinkF;}
+ virtual void SetV0Filter (AliAnalysisFilter* V0F) {fV0Filter = V0F;}
+ virtual void SetCascadeFilter (AliAnalysisFilter* CascadeF) {fCascadeFilter = CascadeF;}
+ virtual void SetPthreshold (Double_t p) {fHighPthreshold = p;}
+ virtual void SetPshape (TF1 *func) {fPtshape = func;}
+ virtual void SetEnableFillAOD (Bool_t b) {fEnableFillAOD = b;}
+
+ virtual void SetAODPID(AliESDtrack *esdtrack, AliAODTrack *aodtrack, AliAODPid *detpid, Double_t bfield);
+ void SetDetectorRawSignals(AliAODPid *aodpid, AliESDtrack *track, Double_t bfield);
+
+ void PrintTask(Option_t *option="all", Int_t indent=0) const;
+
+ void DisableVZERO() { fIsVZEROEnabled = kFALSE; }
+ void DisableCascades() { fAreCascadesEnabled = kFALSE; }
+ void DisableV0s() { fAreV0sEnabled = kFALSE; }
+ void DisableKinks() { fAreKinksEnabled = kFALSE; }
+ void DisableTracks() { fAreTracksEnabled = kFALSE; }
+ void DisablePmdClusters() { fArePmdClustersEnabled = kFALSE; }
+ void DisableCaloClusters() { fAreCaloClustersEnabled = kFALSE; }
+ void DisableCells() { fAreEMCALCellsEnabled = fArePHOSCellsEnabled = kFALSE; }
+ void DisableTracklets() { fAreTrackletsEnabled = kFALSE; }
+
+ virtual void SetTimeZeroType(AliESDpid::EStartTimeType_t tofTimeZeroType) {fTimeZeroType = tofTimeZeroType;}
+
+private:
+ AliAnalysisTaskESDfilter(const AliAnalysisTaskESDfilter&);
+ AliAnalysisTaskESDfilter& operator=(const AliAnalysisTaskESDfilter&);
+ void PrintMCInfo(AliStack *pStack,Int_t label); // for debugging
+ Double_t Chi2perNDF(AliESDtrack* track);
+
+ AliAODHeader* ConvertHeader(const AliESDEvent& esd);
+ void ConvertCascades(const AliESDEvent& esd);
+ void ConvertV0s(const AliESDEvent& esd);
+ void ConvertKinks(const AliESDEvent& esd);
+ void ConvertPrimaryVertices(const AliESDEvent& esd);
+ void ConvertTracks(const AliESDEvent& esd);
+ void ConvertPmdClusters(const AliESDEvent& esd);
+ void ConvertCaloClusters(const AliESDEvent& esd);
+ void ConvertEMCALCells(const AliESDEvent& esd);
+ void ConvertPHOSCells(const AliESDEvent& esd);
+ void ConvertTracklets(const AliESDEvent& esd);
+ void ConvertTPCOnlyTracks(const AliESDEvent& esd);
+ void ConvertVZERO(const AliESDEvent& esd);
+
+ TClonesArray& Tracks();
+ TClonesArray& V0s();
+ TClonesArray& Vertices();
+ TClonesArray& Cascades();
+
+ // Filtering
+ AliAnalysisFilter* fTrackFilter; // Track Filter
+ AliAnalysisFilter* fKinkFilter; // Kink Filter
+ AliAnalysisFilter* fV0Filter; // V0 Filter
+ AliAnalysisFilter* fCascadeFilter; // Cascade Filter
+ // PID
+ Double_t fHighPthreshold; // Pt threshold for detector signal setting
+ TF1 * fPtshape; // Pt spectrum distribution
+ Bool_t fEnableFillAOD; // value that decides if this task activates AOD filling
+ Bool_t* fUsedTrack; //! indices of used tracks
+ Bool_t* fUsedKink; //! indices of used kinks
+ Bool_t* fUsedV0; //! indices of used V0s
+ TRefArray* fAODTrackRefs; // array of track references
+ TRefArray* fAODV0VtxRefs; // array of v0 vertices references
+ TRefArray* fAODV0Refs ; // array of v0s references
+ AliMCEventHandler* fMChandler; // pointer to MC handler (if any)
+ Int_t fNumberOfTracks; // current number of tracks
+ Int_t fNumberOfPositiveTracks; // current number of positive tracks
+ Int_t fNumberOfV0s; // current number of v0s
+ Int_t fNumberOfVertices; // current number of vertices
+ Int_t fNumberOfCascades; // current number of cascades
+ Int_t fNumberOfKinks; // current number of kinks
+ Bool_t fOldESDformat; // is the ESD in old format ?
+ AliAODVertex* fPrimaryVertex; // pointer to primary vertex of the event
+ UInt_t fTPCOnlyFilterMask; // Filter Mask used to select and store refitted TPC only tracks
+ Bool_t fIsVZEROEnabled; // whether or not to fill the vzero branch (true by default)
+ Bool_t fAreCascadesEnabled; // whether or not to fill the cascades branch (true by default)
+ Bool_t fAreV0sEnabled; // whether or not to fill the v0 branch (true by default)
+ Bool_t fAreKinksEnabled; // whether or not to fill the kinks (true by default)
+ Bool_t fAreTracksEnabled; // whether or not to fill the (central) tracks branch (true by default)
+ Bool_t fArePmdClustersEnabled; // whether or not to fill the pmd clusters (true by default)
+ Bool_t fAreCaloClustersEnabled; // whether or not to fill the calo clusters (true by default)
+ Bool_t fAreEMCALCellsEnabled; // whether or not to fill the emcal cells (true by default)
+ Bool_t fArePHOSCellsEnabled; // whether or not to fill the phos cells (true by default)
+ Bool_t fAreTrackletsEnabled; // whether or not to fill the tracklets (true by default)
+ AliESDpid* fESDpid; // esd pid
+ Bool_t fIsPidOwner; // whether we own fESDpid
+ Int_t fTimeZeroType; // time zero type
+
+ ClassDef(AliAnalysisTaskESDfilter, 8); // Analysis task for standard ESD filtering
+};
+
+#endif