4c1434963bcae4f7e7bf98a4afbd5116d780ddf7
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALIsoPhoton.h
1 #ifndef AliAnalysisTaskEMCALIsoPhoton_h
2 #define AliAnalysisTaskEMCALIsoPhoton_h
3
4 // $Id$
5
6 class TH1F;
7 class TH2F;
8 class TObjArray;
9 class AliEMCALGeometry;
10 class AliESDCaloCells;
11 class AliESDEvent;
12 class AliESDtrack;
13 class AliESDtrackCuts;
14 class AliVCluster;
15
16 #include "AliAnalysisTaskSE.h"
17
18 class AliAnalysisTaskEMCALIsoPhoton : public AliAnalysisTaskSE {
19  public:
20   AliAnalysisTaskEMCALIsoPhoton();
21   AliAnalysisTaskEMCALIsoPhoton(const char *name);
22   virtual ~AliAnalysisTaskEMCALIsoPhoton() {}
23
24   void                   UserCreateOutputObjects();
25   void                   UserExec(Option_t *option);
26   void                   Terminate(Option_t *);
27
28   void                   GetCeIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
29   Double_t               GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax);
30   Double_t               GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const; 
31   void                   GetTrIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
32   void                   FillClusHists();
33   void                   SetExotCut(Double_t c)                 { fExoticCut          = c;       }
34   void                   SetGeoName(const char *n)              { fGeoName            = n;       }
35   void                   SetIsoConeR(Double_t r)                { fIsoConeR           = r;       }
36   void                   SetPeriod(const char *n)               { fPeriod             = n;       }
37   void                   SetPrimTrackCuts(AliESDtrackCuts *c)   { fPrTrCuts           = c;       }
38   void                   SetTrainMode(Bool_t t)                 { fIsTrain            = t;       }
39   
40  protected:
41   TRefArray             *fCaloClusters;          //!pointer to EMCal clusters
42   TObjArray             *fSelPrimTracks;         //!pointer to ESD primary tracks
43   AliESDCaloCells       *fEMCalCells;            //!pointer to EMCal cells
44   AliESDtrackCuts       *fPrTrCuts;              //!pointer to hold the prim track cuts
45   AliEMCALGeometry      *fGeom;                  // geometry utils
46   TString                fGeoName;               // geometry name (def = EMCAL_FIRSTYEARV1)
47   TString                fPeriod;                // string to the LHC period
48   Bool_t                 fIsTrain;               // variable to set train mode
49   Double_t               fExoticCut;             // variable to set the cut on exotic clusters
50   Double_t               fIsoConeR;              // variable to set the isolation cone radius
51   
52  private:
53   AliESDEvent *fESD;      //! ESD object
54   TList       *fOutputList; //! Output list
55   //histograms for events with 1+ track pt>1
56   TH1F        *fEvtSel;                  //!evt selection counter: 0=all trg, 1=pv cut 
57   TH1F        *fPVtxZ;                   //!primary vertex Z before cut
58   TH2F        *fCellAbsIdVsAmpl;         //!cell abs id vs cell amplitude (energy)
59   TH2F        *fNClusHighClusE;          //!total number of clusters vs. highest clus energy in the event
60   TH2F        *fM02Et;                   //!M02 vs Et for all clusters
61   TH2F        *fM02EtTM;                 //!M02 vs Et for clusters with track-match (dEta=0.01 && dPhi=0.025)
62   TH2F        *fM02EtCeIso1;             //!M02 vs Et for clusters with isolation neutral Et<1GeV
63   TH2F        *fM02EtCeIso2;             //!M02 vs Et for clusters with isolation neutral Et<2GeV
64   TH2F        *fM02EtCeIso5;             //!M02 vs Et for clusters with isolation neutral Et<5GeV
65   TH2F        *fM02EtTrIso1;             //!M02 vs Et for clusters with isolation charged Et<1GeV
66   TH2F        *fM02EtTrIso2;             //!M02 vs Et for clusters with isolation charged Et<2GeV
67   TH2F        *fM02EtTrIso5;             //!M02 vs Et for clusters with isolation charged Et<5GeV
68   TH2F        *fM02EtAllIso1;            //!M02 vs Et for clusters with isolation total Et<1GeV
69   TH2F        *fM02EtAllIso2;            //!M02 vs Et for clusters with isolation total Et<2GeV
70   TH2F        *fM02EtAllIso5;            //!M02 vs Et for clusters with isolation total Et<5GeV
71   TH2F        *fCeIsoVsEtPho;            //!Neutral isolation Et vs. cluster Et, 0.05<M02<0.30
72   TH2F        *fTrIsoVsEtPho;            //!Charged isolation Et vs. cluster Et, 0.05<M02<0.30
73   TH2F        *fAllIsoVsEtPho;           //!Total isolation Et vs. cluster Et, 0.05<M02<0.30
74   //track matched stuff
75   TH2F        *fM02EtCeIso1TM;           //!Track-matched M02 vs Et for clusters with isolation neutral Et<1GeV
76   TH2F        *fM02EtCeIso2TM;           //!Track-matched M02 vs Et for clusters with isolation neutral Et<2GeV
77   TH2F        *fM02EtCeIso5TM;           //!Track-matched M02 vs Et for clusters with isolation neutral Et<5GeV
78   TH2F        *fM02EtTrIso1TM;           //!Track-matched M02 vs Et for clusters with isolation charged Et<1GeV
79   TH2F        *fM02EtTrIso2TM;           //!Track-matched M02 vs Et for clusters with isolation charged Et<2GeV
80   TH2F        *fM02EtTrIso5TM;           //!Track-matched M02 vs Et for clusters with isolation charged Et<5GeV
81   TH2F        *fM02EtAllIso1TM;          //!Track-matched M02 vs Et for clusters with isolation total Et<1GeV
82   TH2F        *fM02EtAllIso2TM;          //!Track-matched M02 vs Et for clusters with isolation total Et<2GeV
83   TH2F        *fM02EtAllIso5TM;          //!Track-matched M02 vs Et for clusters with isolation total Et<5GeV
84   TH2F        *fCeIsoVsEtPhoTM;          //!Track-matched Neutral isolation Et vs. cluster Et, 0.05<M02<0.30
85   TH2F        *fTrIsoVsEtPhoTM;          //!Track-matched Charged isolation Et vs. cluster Et, 0.05<M02<0.30
86   TH2F        *fAllIsoVsEtPhoTM;         //!Track-matched Total isolation Et vs. cluster Et, 0.05<M02<0.30
87    
88   AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
89   AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
90   
91   ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons
92 };
93 #endif