1 #ifndef ALIANALYSISTASKSDMGAMMAMC_H
2 #define ALIANALYSISTASKSDMGAMMAMC_H
15 class AliESDtrackCuts;
16 class AliESDCaloCluster;
17 class AliAODCaloCluster;
20 class AliEMCALGeometry;
22 #ifndef ALIANALYSISTASKSE_H
23 #include "AliAnalysisTaskSE.h"
26 class AliAnalysisTaskSDMGammaMC : public AliAnalysisTaskSE {
28 AliAnalysisTaskSDMGammaMC();
29 AliAnalysisTaskSDMGammaMC(const char *name);
30 virtual ~AliAnalysisTaskSDMGammaMC();
32 virtual void UserCreateOutputObjects();
33 virtual void UserExec(Option_t *option);
34 virtual void Terminate(Option_t *);
36 void SetMcMode(Bool_t b) { fMcMode = b; }
37 void SetRecalScheme(Int_t kRecalibrator) { fRecalibrator = kRecalibrator; }
38 void SetFidPhiMinMax(Double_t kPhimin, Double_t kPhimax){ fPhimin = kPhimin; fPhimax = kPhimax; }
39 void SetFidEtaMinMax(Double_t kEtamin, Double_t kEtamax){ fEtamin = kEtamin; fEtamax = kEtamax; }
42 static const int zvtx_bins = 16;
43 static const int mult_bins = 25;
44 static const unsigned int poolDepth = 25;
46 Int_t GetMultBin(Int_t mult);
47 Int_t GetZvtxBin(Double_t vertZ);
48 Int_t isGoodEsdCluster(AliESDCaloCluster* esdclust);
49 Int_t isGoodAodCluster(AliAODCaloCluster* aodclust);
50 Double_t getDeltaPhi(TLorentzVector p1, TLorentzVector p2);
51 Double_t getDeltaEta(TLorentzVector p1, TLorentzVector p2);
52 Double_t PrivateEnergyRecal(Double_t energy, Int_t iCalib);
54 TList *fOutput; //! Output list
55 Bool_t fMcMode; // monte carlo mode
56 Int_t fRecalibrator; // custom recalibrator?
57 Double_t fPhimin; // Cuts.
58 Double_t fPhimax; // Cuts.
59 Double_t fEtamin; // Cuts.
60 Double_t fEtamax; // Cuts.
61 AliESDtrackCuts *fTrackCuts; // Track cuts
62 AliESDEvent *fEsdEv; //!pointer to input esd event
63 AliAODEvent *fAodEv; //!pointer to input aod event
64 TH1F *h1_nClusters; //! # of clusters/evt
65 TH1F *h1_zvtx; //! # of clusters/evt
66 TH1F *h1_trigger; //! # of clusters/evt
67 TH1F *h1_E; //! energy spectrum
68 TH1F *h1_Phi; //! Pt spectrum
70 TH2F *h2_PiMotherID; //! first bin is primaries, second is non-primaries
71 TH2F *h2_GaMotherID; //! first bin is primaries, second is non-primaries
72 TH3F *h3_gE_RecTruth; //! E_in/E_rec vs E_rec (for 4 categories)
73 TH3F *h3_gE_RecTruth_ncellscut; //! E_in/E_rec vs E_rec (for 4 categories)
75 TH1F *h1_Pi0TruthPt; //! Pt spectrum from MC!
76 TH1F *h1_PriPi0TruthPt; //! Pt spectrum from MC!
77 TH1F *h1_Pi0TruthPtEmcal; //! Pt spectrum from MC!
78 TH1F *h1_PriPi0TruthPtEmcal; //! Pt spectrum from MC!
80 TH2F *h2_Pi0TruthPhiEta; //! etaphi spectrum from MC!
81 TH2F *h2_PriPi0TruthPhiEta; //! etaphi spectrum from MC!
82 TH2F *h2_Pi0TruthPhiEtaEmcal; //! etaphi spectrum from MC!
83 TH2F *h2_PriPi0TruthPhiEtaEmcal; //! etaphi spectrum from MC!
85 TH1F *h1_TruthPhotonsEmcal; //! Pt spectrum from MC!
86 TH2F *h2_TruthPhotonsPhiEta; //! Pt spectrum from MC!
87 TH1F *h1_PhotonsEmcal; //! Pt spectrum from MC!
88 TH1F *h1_PhotonsNCellsCut; //! Pt spectrum from MC!
89 TH1F *h1_PhotonsTrackMatchCut; //! Pt spectrum from MC!
90 TH1F *h1_PhotonsAllCut; //! Pt spectrum from MC!
91 TH2F *h2_PhotonsPhiEtaIsEmcal; //! Pt spectrum from MC!
93 TH1F *h1_dR_RealMC; //! Pt spectrum from MC!
95 TH1F *h1_Eta; //! pseudorapidity spectrum
96 TH1F *h1_Chi2; //! pseudorapidity spectrum
97 TH1F *h1_nTrkMatch; //! pseudorapidity spectrum
98 TH1F *h1_nCells; //! pseudorapidity spectrum
99 TH1F *h1_ClusterDisp; //! cluster dispersion
100 TH2F *h2_Ellipse; //! ellipse axis?
101 TH2F *h2_EtaPt; //! 2d histogram Y - pseudorap spectrum
102 TH2F *h2_dphi_deta; //! 2dimensional E vs mom
103 TH2F *h2_dphi_deta_mix; //! 2dimensional E vs mom
104 TH2F *h2_DispRes; //! 2dimensional E vs mom
105 TH2F *h2_cells_M02; //!
107 std::vector<TLorentzVector> Photons[poolDepth][zvtx_bins][mult_bins];
108 std::vector<Int_t> TriggerList;
110 AliAnalysisTaskSDMGammaMC(const AliAnalysisTaskSDMGammaMC&); // not implemented
111 AliAnalysisTaskSDMGammaMC& operator=(const AliAnalysisTaskSDMGammaMC&); // not implemented
113 ClassDef(AliAnalysisTaskSDMGammaMC, 1); // example of analysis