]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALTasks/AliAnalysisTaskEMCALIsoPhoton.h
including histo to count events without reco PV and changes from fzhou
[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   Float_t                GetClusSource(const AliVCluster *cluster);
41   void                   FollowGamma();
42   void                   GetDaughtersInfo(const int firstd, const int lastd, const int selfid, const char *indputindent);
43   void                   SetExotCut(Double_t c)                 { fExoticCut          = c;       }
44   void                   SetGeoName(const char *n)              { fGeoName            = n;       }
45   void                   SetIsoConeR(Double_t r)                { fIsoConeR           = r;       }
46   void                   SetPeriod(const char *n)               { fPeriod             = n;       }
47   void                   SetTriggerBit(const char *tb)          { fTrigBit            = tb;      }
48   void                   SetPrimTrackCuts(AliESDtrackCuts *c)   { fPrTrCuts           = c;       }
49   void                   SetTrainMode(Bool_t t)                 { fIsTrain            = t;       }
50   void                   SetMcMode(Bool_t mc)                   { fIsMc               = mc;      }
51   void                   SetDebugOn(Bool_t d)                   { fDebug              = d;       }
52   void                   SetPathStringSelect(char *p)           { fPathStrOpt         = p;       }
53   void                   SetEtCut(Double_t ec)                  { fECut               = ec;      }
54   
55  protected:
56   TRefArray             *fCaloClusters;          //!pointer to EMCal clusters
57   TObjArray             *fSelPrimTracks;         //!pointer to ESD primary tracks
58   TClonesArray          *fTracks;                //!track input array
59   AliESDCaloCells       *fEMCalCells;            //!pointer to EMCal cells
60   AliESDtrackCuts       *fPrTrCuts;              //pointer to hold the prim track cuts
61   AliEMCALGeometry      *fGeom;                  // geometry utils
62   TString                fGeoName;               // geometry name (def = EMCAL_FIRSTYEARV1)
63   TString                fPeriod;                // string to the LHC period
64   TString                fTrigBit;               // string to the trigger bit name
65   Bool_t                 fIsTrain;               // variable to set train mode
66   Bool_t                 fIsMc;                  // variable to set mc mode
67   Bool_t                 fDebug;                 // variable to set on/off debugging printouts
68   TString                fPathStrOpt;            // variable to set the name of files to be analyzed (MC only)
69   Double_t               fExoticCut;             // variable to set the cut on exotic clusters
70   Double_t               fIsoConeR;              // variable to set the isolation cone radius
71   Int_t                  fNDimensions;           // variable to set the number of dimensions of n-sparse
72   Double_t               fECut;                  // variable to set the minimum E of a cluster
73   Int_t                  fTrackMult;             // global variable with the event multiplicity        
74   TString                fMcIdFamily;            // string that holds the ids of all particles originated from the prompt photon
75   Int_t                  fNClusForDirPho;        // number of clusters from prompt photon per event
76   Float_t                fDirPhoPt;              // prompt photon pt (assumes only one per event)
77   Float_t                fHigherPtCone;          // higher pt inside the cone around the candidate
78
79   
80  private:
81   AliESDEvent *fESD;      //! ESD object
82   AliMCEvent  *fMCEvent;  //! MC event object
83   AliStack    *fStack;    //!MC particles stack object
84
85   TList       *fOutputList; //! Output list
86   //histograms for events with 1+ track pt>1
87   TH1F        *fEvtSel;                    //!evt selection counter: 0=all trg, 1=pv cut 
88   TH1F        *fNClusEt10;                 //!number of clusters w/ Et>10 in the event
89   TH1F        *fRecoPV;                    //!histogram to record if an event has a prim. vert.
90   TH1F        *fPVtxZ;                     //!primary vertex Z before cut
91   TH1F        *fTrMultDist;                //!track multiplicity distribution
92   TH3F        *fMCDirPhotonPtEtaPhi;       //!direct produced photon pt
93   TH1F        *fDecayPhotonPtMC;           //!decay photon pt
94   TH2F        *fCellAbsIdVsAmpl;           //!cell abs id vs cell amplitude (energy)
95   TH2F        *fNClusHighClusE;            //!total number of clusters vs. highest clus energy in the event
96   TH2F        *fHigherPtConeM02;           //!M02 vs. the higher pt of a track inside the cone
97   TH2F        *fClusEtMcPt;                //!cluster et x mc-pt
98   TH2F        *fClusMcDetaDphi;            //!delta-eta x delta-phi(reco-mc)
99   TH2F        *fNClusPerPho;               //!delta-eta x delta-phi(reco-mc)
100   TH3F        *fMCDirPhotonPtEtaPhiNoClus; //!pt x eta x phi for prompt photons that didn't produce clusters
101   THnSparse   *fHnOutput;                  //!Output matrix with 7 dimensions
102
103   AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
104   AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
105   
106   ClassDef(AliAnalysisTaskEMCALIsoPhoton, 1); // Class to analyse isolated photons
107 };
108 #endif