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