1 #ifndef ALIANALYSISTASKTAGGEDPHOTONS_H
2 #define ALIANALYSISTASKTAGGEDPHOTONS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5 //______________________________________________________________________________
6 // Analysis for PHOS Tagged Photons
7 // marks photons making pi0 with any other photon
8 // and calculates necessary corrections for fake pairs and
9 // decay partners escaped acceptance. If MC info is present
10 // fills set of controll histograms.
12 //*-- Dmitry Peresunko
13 //////////////////////////////////////////////////////////////////////////////
15 #include "AliAnalysisTaskSE.h"
16 class AliAnalysisUtils ;
20 class AliPHOSGeometry;
22 class AliAODMCParticle ;
24 class AliTriggerAnalysis ;
27 class AliAnalysisTaskTaggedPhotons : public AliAnalysisTaskSE {
30 AliAnalysisTaskTaggedPhotons() ;
31 AliAnalysisTaskTaggedPhotons(const char *name) ;
32 AliAnalysisTaskTaggedPhotons(const AliAnalysisTaskTaggedPhotons& ap) ;
33 AliAnalysisTaskTaggedPhotons& operator = (const AliAnalysisTaskTaggedPhotons& ap) ;
34 virtual ~AliAnalysisTaskTaggedPhotons() ;
36 virtual void UserCreateOutputObjects();
38 virtual void LocalInit() { Init() ; }
39 virtual void UserExec(Option_t * opt = "") ;
40 virtual void Terminate(Option_t * opt = "") ;
42 void SetTrigger(Bool_t isPHOSTrig){fIsMB=isPHOSTrig;}
43 void SetMC(Bool_t isMC=kTRUE){fIsMC=isMC;}
44 void SetPi0WeightParameters(TArrayD * ar) ;
48 void FillTaggingHistos() ;
49 Int_t GetFiducialArea(const Float_t * pos)const ; //what kind of fiducial area hit the photon
50 Int_t IsSameParent(const AliCaloPhoton *p1, const AliCaloPhoton *p2) const; //Check MC genealogy; return PDG of parent
51 Bool_t IsGoodChannel(Int_t mod, Int_t ix, Int_t iz) ;
52 Double_t InPi0Band(Double_t m, Double_t pt)const; //Check if invariant mass is within pi0 peak
53 Bool_t TestDisp(Double_t l0, Double_t l1, Double_t e)const ;
54 Bool_t TestTOF(Double_t /*t*/,Double_t /*en*/)const{return kTRUE;}
55 Bool_t TestCharged(Double_t dr,Double_t en)const ;
56 void InitGeometry() ; //read reotation matrixes from AOD/AOD
57 Int_t EvalIsolation(TLorentzVector * ph,Bool_t isPhoton) ;
58 Bool_t TestLambda(Double_t pt,Double_t l1,Double_t l2) ;
59 Bool_t TestPID(Int_t iPID, AliCaloPhoton* part) ;
60 Double_t PrimaryParticleWeight(AliAODMCParticle * particle) ;
61 Int_t FindPrimary(AliVCluster*, Bool_t&);
62 void FillHistogram(const char * key,Double_t x) const ; //Fill 1D histogram witn name key
63 void FillHistogram(const char * key,Double_t x, Double_t y) const ; //Fill 2D histogram witn name key
64 void FillHistogram(const char * key,Double_t x, Double_t y, Double_t z) const ; //Fill 3D histogram witn name key
65 void FillPIDHistograms(const char * name, const AliCaloPhoton * p) const ;
66 void FillPIDHistograms(const char * name, const AliCaloPhoton * p ,Double_t y) const ;
67 void FillPIDHistograms(const char * name, const AliCaloPhoton * p , const AliCaloPhoton * p2,Double_t y, Bool_t isReal) const ;
71 AliPHOSGeometry *fPHOSgeom; //!PHOS geometry
72 THashList * fOutputContainer ; //! List of output histograms
73 TClonesArray *fStack ; //!Pointer to MC stack
74 TClonesArray * fTrackEvent ; //!List of tracks in the event
75 TClonesArray * fPHOSEvent ; //!List of tracks in the event
76 TList * fPHOSEvents[10][5] ; //!Previous events for mixing
77 TList * fCurrentMixedList; //! list of previous evetns for given centrality
78 AliTriggerAnalysis * fTriggerAnalysis ; //!
79 AliAnalysisUtils * fUtils ;
81 //Fiducial area parameters
82 Float_t fZmax ; //Rectangular
83 Float_t fZmin ; //area
84 Float_t fPhimax ; //covered by
85 Float_t fPhimin ; //full calorimeter
86 Double_t fWeightParamPi0[6] ; //Parameters to calculate weights
90 Bool_t fIsMB ; //which trigger to use
91 Bool_t fIsMC ; //Is this is MC
92 TH2I * fPHOSBadMap[6] ;
94 ClassDef(AliAnalysisTaskTaggedPhotons, 2); // a PHOS photon analysis task
96 #endif // ALIANALYSISTASKTAGGEDPHOTONS_H