#ifndef ALIANALYSISTASKCALOFILTER_H #define ALIANALYSISTASKCALOFILTER_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id: AliAnalysisTaskCaloFilter.h $ */ ////////////////////////////////////////////////////////// // Filter the ESDCaloClusters and ESDCaloCells of EMCAL, // PHOS or both, creating the corresponing AODCaloClusters // and AODCaloCells. // Keep also the AODHeader information and the vertex. // Needed for calorimeter calibration. // Copy of AliAnalysisTaskESDfilter. // Author: Gustavo Conesa Balbastre (INFN - Frascati) ////////////////////////////////////////////////////////// class TList; #include "AliAnalysisTaskSE.h" class AliEMCALRecoUtils; class AliEMCALGeometry; class AliESDtrackCuts; class AliTriggerAnalysis; class AliAnalysisTaskCaloFilter : public AliAnalysisTaskSE { public: AliAnalysisTaskCaloFilter(); AliAnalysisTaskCaloFilter(const char* name); virtual ~AliAnalysisTaskCaloFilter() ; private: AliAnalysisTaskCaloFilter(const AliAnalysisTaskCaloFilter&); AliAnalysisTaskCaloFilter& operator=(const AliAnalysisTaskCaloFilter&); public: //General analysis frame methods virtual void UserCreateOutputObjects(); //virtual void Init(); //virtual void LocalInit() ; virtual void UserExec(Option_t *option); virtual void Terminate(Option_t *option); //Geometry methods void SetEMCALGeometryName(TString name) { fEMCALGeoName = name ; } TString EMCALGeometryName() const { return fEMCALGeoName ; } void SwitchOnLoadOwnEMCALGeometryMatrices() { fLoadEMCALMatrices = kTRUE ; } void SwitchOffLoadOwnEMCALGeometryMatrices() { fLoadEMCALMatrices = kFALSE ; } void SetEMCALGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fEMCALMatrix[i] = m ; } //void SwitchOnLoadOwnPHOSGeometryMatrices() { fLoadPHOSMatrices = kTRUE ; } //void SwitchOffLoadOwnPHOSGeometryMatrices() { fLoadPHOSMatrices = kFALSE ; } //void SetPHOSGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fPHOSMatrix[i] = m ; } //Task settings enum caloFilter {kBoth = 0, kEMCAL = 1, kPHOS=2}; void SetCaloFilter(Int_t calo) { fCaloFilter = calo;} TString GetCaloFilter() const { return fCaloFilter;} void SetEMCALRecoUtils(AliEMCALRecoUtils * ru) { fEMCALRecoUtils = ru ;} AliEMCALRecoUtils* GetEMCALRecoUtils() const { return fEMCALRecoUtils;} void SwitchOnClusterCorrection() { fCorrect = kTRUE ;} void SwitchOffClusterCorrection() { fCorrect = kFALSE;} //Event selection AliESDtrackCuts* GetTrackCuts() const { return fESDtrackCuts ; } void SetTrackCuts(AliESDtrackCuts * cuts) { fESDtrackCuts = cuts ; } Float_t GetTrackMultiplicityEtaCut() const { return fTrackMultEtaCut ; } void SetTrackMultiplicityEtaCut(Float_t eta) { fTrackMultEtaCut = eta ; } virtual Bool_t CheckForPrimaryVertex(); void PrintInfo(); private: //TList* fCuts ; //! List with analysis cuts Int_t fCaloFilter; // Calorimeter to filter Int_t fCorrect; // Recalibrate or recalculate different cluster parameters //EMCAL specific AliEMCALGeometry * fEMCALGeo; //! EMCAL geometry TString fEMCALGeoName; // Name of geometry to use. AliEMCALRecoUtils * fEMCALRecoUtils; // Pointer to EMCAL utilities for clusterization AliESDtrackCuts * fESDtrackCuts ; // Track cut AliTriggerAnalysis* fTriggerAnalysis; // Access to trigger selection algorithm for V0AND calculation Float_t fTrackMultEtaCut ; // Track multiplicity eta cut //Geometry Bool_t fLoadEMCALMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs TGeoHMatrix * fEMCALMatrix[10]; // Geometry matrices with alignments //Bool_t fLoadPHOSMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs //TGeoHMatrix * fPHOSMatrix[5]; // Geometry matrices with alignments Bool_t fGeoMatrixSet; // Set geometry matrices only once, for the first event. ClassDef(AliAnalysisTaskCaloFilter, 5); // Analysis task for standard ESD filtering }; #endif