]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALTasks/AliAnalysisTaskEMCALIsoPhoton.h
including MC features
[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 TList;
10 class TObjArray;
11 class AliEMCALGeometry;
12 class AliESDCaloCells;
13 class AliESDEvent;
14 class AliESDtrack;
15 class AliESDtrackCuts;
16 class AliVCluster;
17 class AliMCEvent;
18 class AliStack;
19 class TParticle;
20
21 #include "AliAnalysisTaskSE.h"
22
23 class AliAnalysisTaskEMCALIsoPhoton : public AliAnalysisTaskSE {
24  public:
25   AliAnalysisTaskEMCALIsoPhoton();
26   AliAnalysisTaskEMCALIsoPhoton(const char *name);
27   virtual ~AliAnalysisTaskEMCALIsoPhoton() {}
28
29   void                   UserCreateOutputObjects();
30   void                   UserExec(Option_t *option);
31   void                   Terminate(Option_t *);
32
33   void                   GetCeIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
34   Double_t               GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax);
35   Double_t               GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const; 
36   void                   GetTrIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core);
37   void                   FillClusHists();
38   void                   FillMcHists();
39   void                   SetExotCut(Double_t c)                 { fExoticCut          = c;       }
40   void                   SetGeoName(const char *n)              { fGeoName            = n;       }
41   void                   SetIsoConeR(Double_t r)                { fIsoConeR           = r;       }
42   void                   SetPeriod(const char *n)               { fPeriod             = n;       }
43   void                   SetTriggerBit(const char *tb)          { fTrigBit            = tb;      }
44   void                   SetPrimTrackCuts(AliESDtrackCuts *c)   { fPrTrCuts           = c;       }
45   void                   SetTrainMode(Bool_t t)                 { fIsTrain            = t;       }
46   void                   SetMcMode(Bool_t mc)                   { fIsMc               = mc;      }
47   
48  protected:
49   TRefArray             *fCaloClusters;          //!pointer to EMCal clusters
50   TObjArray             *fSelPrimTracks;         //!pointer to ESD primary tracks
51   TClonesArray          *fTracks;                //!track input array
52   AliESDCaloCells       *fEMCalCells;            //!pointer to EMCal cells
53   AliESDtrackCuts       *fPrTrCuts;              //pointer to hold the prim track cuts
54   AliEMCALGeometry      *fGeom;                  // geometry utils
55   TString                fGeoName;               // geometry name (def = EMCAL_FIRSTYEARV1)
56   TString                fPeriod;                // string to the LHC period
57   TString                fTrigBit;               // string to the trigger bit name
58   Bool_t                 fIsTrain;               // variable to set train mode
59   Bool_t                 fIsMc;                  // variable to set mc mode
60   Double_t               fExoticCut;             // variable to set the cut on exotic clusters
61   Double_t               fIsoConeR;              // variable to set the isolation cone radius
62   Int_t                  fNDimensions;           // variable to set the number of dimensions of n-sparse
63   Double_t               fECut;                  // variable to set the minimum E of a cluster
64   Int_t                  fTrackMult;             // global variable with the event multiplicity        
65
66   
67  private:
68   AliESDEvent *fESD;      //! ESD object
69   AliMCEvent  *fMCEvent;  //! MC event object
70   AliStack    *fStack;    //!MC particles stack object
71
72   TList       *fOutputList; //! Output list
73   //histograms for events with 1+ track pt>1
74   TH1F        *fEvtSel;                  //!evt selection counter: 0=all trg, 1=pv cut 
75   TH1F        *fNClusEt10;               //!number of clusters w/ Et>10 in the event
76   TH1F        *fPVtxZ;                   //!primary vertex Z before cut
77   TH1F        *fDirPhotonPtMC;           //!direct produced photon pt
78   TH1F        *fDecayPhotonPtMC;         //!decay photon pt
79   TH2F        *fCellAbsIdVsAmpl;         //!cell abs id vs cell amplitude (energy)
80   TH2F        *fNClusHighClusE;          //!total number of clusters vs. highest clus energy in the event
81   THnSparse   *fHnOutput;                //!Output matrix with 7 dimensions
82
83   AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
84   AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
85   
86   ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons
87 };
88 #endif