including a parameter to set the trigger bit option
[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                   SetTriggerBit(const char *tb)          { fTrigBit            = tb;      }
38   void                   SetPrimTrackCuts(AliESDtrackCuts *c)   { fPrTrCuts           = c;       }
39   void                   SetTrainMode(Bool_t t)                 { fIsTrain            = t;       }
40   
41  protected:
42   TRefArray             *fCaloClusters;          //!pointer to EMCal clusters
43   TObjArray             *fSelPrimTracks;         //!pointer to ESD primary tracks
44   AliESDCaloCells       *fEMCalCells;            //!pointer to EMCal cells
45   AliESDtrackCuts       *fPrTrCuts;              //!pointer to hold the prim track cuts
46   AliEMCALGeometry      *fGeom;                  // geometry utils
47   TString                fGeoName;               // geometry name (def = EMCAL_FIRSTYEARV1)
48   TString                fPeriod;                // string to the LHC period
49   TString                fTrigBit;               // string to the trigger bit name
50   Bool_t                 fIsTrain;               // variable to set train mode
51   Double_t               fExoticCut;             // variable to set the cut on exotic clusters
52   Double_t               fIsoConeR;              // variable to set the isolation cone radius
53   
54  private:
55   AliESDEvent *fESD;      //! ESD object
56   TList       *fOutputList; //! Output list
57   //histograms for events with 1+ track pt>1
58   TH1F        *fEvtSel;                  //!evt selection counter: 0=all trg, 1=pv cut 
59   TH1F        *fPVtxZ;                   //!primary vertex Z before cut
60   TH2F        *fCellAbsIdVsAmpl;         //!cell abs id vs cell amplitude (energy)
61   TH2F        *fNClusHighClusE;          //!total number of clusters vs. highest clus energy in the event
62   TH2F        *fM02Et;                   //!M02 vs Et for all clusters
63   TH2F        *fM02EtTM;                 //!M02 vs Et for clusters with track-match (dEta=0.01 && dPhi=0.025)
64   TH2F        *fM02EtCeIso1;             //!M02 vs Et for clusters with isolation neutral Et<1GeV
65   TH2F        *fM02EtCeIso2;             //!M02 vs Et for clusters with isolation neutral Et<2GeV
66   TH2F        *fM02EtCeIso5;             //!M02 vs Et for clusters with isolation neutral Et<5GeV
67   TH2F        *fM02EtTrIso1;             //!M02 vs Et for clusters with isolation charged Et<1GeV
68   TH2F        *fM02EtTrIso2;             //!M02 vs Et for clusters with isolation charged Et<2GeV
69   TH2F        *fM02EtTrIso5;             //!M02 vs Et for clusters with isolation charged Et<5GeV
70   TH2F        *fM02EtAllIso1;            //!M02 vs Et for clusters with isolation total Et<1GeV
71   TH2F        *fM02EtAllIso2;            //!M02 vs Et for clusters with isolation total Et<2GeV
72   TH2F        *fM02EtAllIso5;            //!M02 vs Et for clusters with isolation total Et<5GeV
73   TH2F        *fCeIsoVsEtPho;            //!Neutral isolation Et vs. cluster Et, 0.05<M02<0.30
74   TH2F        *fTrIsoVsEtPho;            //!Charged isolation Et vs. cluster Et, 0.05<M02<0.30
75   TH2F        *fAllIsoVsEtPho;           //!Total isolation Et vs. cluster Et, 0.05<M02<0.30
76   //track matched stuff
77   TH2F        *fM02EtCeIso1TM;           //!Track-matched M02 vs Et for clusters with isolation neutral Et<1GeV
78   TH2F        *fM02EtCeIso2TM;           //!Track-matched M02 vs Et for clusters with isolation neutral Et<2GeV
79   TH2F        *fM02EtCeIso5TM;           //!Track-matched M02 vs Et for clusters with isolation neutral Et<5GeV
80   TH2F        *fM02EtTrIso1TM;           //!Track-matched M02 vs Et for clusters with isolation charged Et<1GeV
81   TH2F        *fM02EtTrIso2TM;           //!Track-matched M02 vs Et for clusters with isolation charged Et<2GeV
82   TH2F        *fM02EtTrIso5TM;           //!Track-matched M02 vs Et for clusters with isolation charged Et<5GeV
83   TH2F        *fM02EtAllIso1TM;          //!Track-matched M02 vs Et for clusters with isolation total Et<1GeV
84   TH2F        *fM02EtAllIso2TM;          //!Track-matched M02 vs Et for clusters with isolation total Et<2GeV
85   TH2F        *fM02EtAllIso5TM;          //!Track-matched M02 vs Et for clusters with isolation total Et<5GeV
86   TH2F        *fCeIsoVsEtPhoTM;          //!Track-matched Neutral isolation Et vs. cluster Et, 0.05<M02<0.30
87   TH2F        *fTrIsoVsEtPhoTM;          //!Track-matched Charged isolation Et vs. cluster Et, 0.05<M02<0.30
88   TH2F        *fAllIsoVsEtPhoTM;         //!Track-matched Total isolation Et vs. cluster Et, 0.05<M02<0.30
89    
90   AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
91   AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
92   
93   ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons
94 };
95 #endif