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