]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/CaloCalib/AliAnalysisTaskCaloFilter.h
Add possibility to have at least 2 MC labels in the new cluster (Jocelyn)
[u/mrichter/AliRoot.git] / PWG4 / CaloCalib / AliAnalysisTaskCaloFilter.h
1 #ifndef ALIANALYSISTASKCALOFILTER_H
2 #define ALIANALYSISTASKCALOFILTER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id: AliAnalysisTaskCaloFilter.h  $ */
8
9 //////////////////////////////////////////////////////////
10 // Filter the ESDCaloClusters and ESDCaloCells of EMCAL,
11 // PHOS or both, creating the corresponing AODCaloClusters
12 // and AODCaloCells.
13 // Keep also the AODHeader information and the vertex.
14 // Needed for calorimeter calibration.
15 // Copy of AliAnalysisTaskESDfilter.
16 // Author: Gustavo Conesa Balbastre (INFN - Frascati)
17 //////////////////////////////////////////////////////////
18
19 class TList;
20
21 #include "AliAnalysisTaskSE.h"
22 class AliEMCALRecoUtils;
23 class AliEMCALGeometry;
24 class AliESDtrackCuts;
25 class AliTriggerAnalysis;
26 class TNtuple;
27 class AliAnalysisTaskCaloFilter : public AliAnalysisTaskSE
28 {
29  public:
30   AliAnalysisTaskCaloFilter();
31   AliAnalysisTaskCaloFilter(const char* name);
32   virtual ~AliAnalysisTaskCaloFilter() ;
33   
34 private:
35   AliAnalysisTaskCaloFilter(const AliAnalysisTaskCaloFilter&);
36   AliAnalysisTaskCaloFilter& operator=(const AliAnalysisTaskCaloFilter&);
37   
38 public:
39   //General analysis frame methods
40   virtual void   UserCreateOutputObjects();
41   virtual void   Init();
42   virtual void   LocalInit() { Init() ; }
43   virtual void   UserExec(Option_t *option);
44   virtual void   Terminate(Option_t *option);
45       
46   //Geometry methods
47   void SetEMCALGeometryName(TString name)                  { fEMCALGeoName = name        ; }
48   TString EMCALGeometryName()                       const  { return fEMCALGeoName        ; }
49   void SwitchOnLoadOwnEMCALGeometryMatrices()              { fLoadEMCALMatrices = kTRUE  ; }
50   void SwitchOffLoadOwnEMCALGeometryMatrices()             { fLoadEMCALMatrices = kFALSE ; }
51   void SetEMCALGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fEMCALMatrix[i]    = m      ; }
52   //void SwitchOnLoadOwnPHOSGeometryMatrices()               { fLoadPHOSMatrices = kTRUE  ; }
53   //void SwitchOffLoadOwnPHOSGeometryMatrices()              { fLoadPHOSMatrices = kFALSE ; }
54   //void SetPHOSGeometryMatrixInSM(TGeoHMatrix* m, Int_t i)  { fPHOSMatrix[i]    = m      ; }
55   
56   //Task settings
57   void    FillAODFile(Bool_t yesno)               { fFillAODFile = yesno    ; }
58   enum    caloFilter {kBoth = 0, kEMCAL = 1, kPHOS=2};
59   void    SetCaloFilter(Int_t calo)               { fCaloFilter = calo      ; }
60   TString GetCaloFilter()                  const  { return fCaloFilter      ; }  
61   
62   void SetEMCALRecoUtils(AliEMCALRecoUtils * ru)  { fEMCALRecoUtils = ru    ; }
63   AliEMCALRecoUtils* GetEMCALRecoUtils()   const  { return fEMCALRecoUtils  ; }
64
65   void    SwitchOnClusterCorrection()             { fCorrect = kTRUE        ; }
66   void    SwitchOffClusterCorrection()            { fCorrect = kFALSE       ; }
67   
68   //Event selection
69   AliESDtrackCuts* GetTrackCuts()          const  { return fESDtrackCuts    ; }
70   void    SetTrackCuts(AliESDtrackCuts * cuts)    { fESDtrackCuts = cuts    ; }           
71   Float_t GetTrackMultiplicityEtaCut()     const  { return fTrackMultEtaCut ; }
72   void    SetTrackMultiplicityEtaCut(Float_t eta) { fTrackMultEtaCut = eta  ; }         
73   virtual Bool_t CheckForPrimaryVertex();
74
75   void    PrintInfo();
76   
77   void    SetConfigFileName(TString name)         { fConfigName = name      ; }
78   
79 private:
80   
81   //TList* fCuts ;      //! List with analysis cuts
82   Int_t               fCaloFilter;        // Calorimeter to filter
83   Int_t               fCorrect;           // Recalibrate or recalculate different cluster parameters
84   //EMCAL specific
85   AliEMCALGeometry  * fEMCALGeo;          //! EMCAL geometry
86   TString             fEMCALGeoName;      // Name of geometry to use.
87   AliEMCALRecoUtils * fEMCALRecoUtils;    // Pointer to EMCAL utilities for clusterization
88
89   AliESDtrackCuts   * fESDtrackCuts;      // Track cut  
90   AliTriggerAnalysis* fTriggerAnalysis;   // Access to trigger selection algorithm for V0AND calculation
91   Float_t             fTrackMultEtaCut;   // Track multiplicity eta cut
92   
93   //Geometry
94   Bool_t              fLoadEMCALMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs
95   TGeoHMatrix       * fEMCALMatrix[10];   // Geometry matrices with alignments
96   //Bool_t            fLoadPHOSMatrices;  // Matrices set from configuration, not get from geometry.root or from ESDs/AODs
97   //TGeoHMatrix *     fPHOSMatrix[5];     // Geometry matrices with alignments
98   Bool_t              fGeoMatrixSet;      // Set geometry matrices only once, for the first event.   
99
100   TNtuple           * fEventNtuple;       // NTuple with event parameters 
101   
102   TString             fConfigName;        // Name of analysis configuration file
103   Bool_t              fFillAODFile;       // Fill the output AOD file with clusters 
104   
105   ClassDef(AliAnalysisTaskCaloFilter, 6); // Analysis task for standard ESD filtering
106 };
107
108 #endif