]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrDep/AliAnalysisTaskTaggedPhotons.h
new task for direct photon identification tagging photons as decay or not
[u/mrichter/AliRoot.git] / PWG4 / PartCorrDep / AliAnalysisTaskTaggedPhotons.h
1 #ifndef ALIANALYSISTASKTAGGEDPHOTONS_H\r
2 #define ALIANALYSISTASKTAGGEDPHOTONS_H\r
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
4  * See cxx source for full Copyright notice     */\r
5 //______________________________________________________________________________\r
6 // Analysis for PHOS Tagged Photons \r
7 //\r
8 //*-- Dmitry Blau \r
9 //////////////////////////////////////////////////////////////////////////////\r
10 \r
11 #include <TTree.h> \r
12 #include "AliAnalysisTaskSE.h"  \r
13 \r
14 class AliStack ; \r
15 class AliESDEvent ; \r
16 //class AliAODEvent ; \r
17 class TNtuple ;\r
18 class TH1D ; \r
19 class TH1I ; \r
20 class TH2D ;\r
21 class TH2F ;\r
22 class TH3D ;\r
23 class AliPHOSGeoUtils;\r
24 class TFile;\r
25 class AliAODPWG4Particle;\r
26 class AliCaloTrackReader;\r
27 \r
28 class AliAnalysisTaskTaggedPhotons : public AliAnalysisTaskSE {\r
29 \r
30 public:\r
31   AliAnalysisTaskTaggedPhotons() ;\r
32   AliAnalysisTaskTaggedPhotons(const char *name) ;\r
33   AliAnalysisTaskTaggedPhotons(const AliAnalysisTaskTaggedPhotons& ap) ;   \r
34   AliAnalysisTaskTaggedPhotons& operator = (const AliAnalysisTaskTaggedPhotons& ap) ;\r
35   virtual ~AliAnalysisTaskTaggedPhotons() ;\r
36    \r
37   virtual void UserCreateOutputObjects(); \r
38   virtual void Init() ; \r
39   virtual void LocalInit() { Init() ; }\r
40   virtual void UserExec(Option_t * opt = "") ;\r
41   virtual void Terminate(Option_t * opt = "") ;\r
42 \r
43   void SetDebugLevel(Int_t level) { fDebug = level ; }\r
44   void SetPHOS(Bool_t isPHOS=kTRUE){fPHOS=isPHOS ;} //Which calirimeter to analyze\r
45   \r
46   void SetPhotonId(Float_t threshold) { fPhotonId = threshold ; }\r
47   void SetMinEnergyCut(Float_t threshold) { fMinEnergyCut = threshold; }\r
48 \r
49   //Parameterization of pi0 peak position\r
50   void SetPi0MeanParameters(Float_t p0, Float_t p1, Float_t p2, Float_t p3)\r
51       { fPi0Mean_p0 = p0; fPi0Mean_p1 = p1; fPi0Mean_p2 = p2; fPi0Mean_p3 = p3;}\r
52   //Parameterization of pi0 peak width    \r
53   void SetPi0SigmaParameters(Float_t p0, Float_t p1, Float_t p2){ fPi0Sigma_p0 = p0; fPi0Sigma_p1 = p1;fPi0Sigma_p2 = p2; }\r
54 \r
55 protected:\r
56   Float_t GetPhotonId() const { return fPhotonId ; }\r
57   Int_t   GetFiducialArea(Float_t * pos) ; //what kind of fiducial area hit the photon\r
58   Bool_t  IsSamePi0(AliAODPWG4Particle *p1, AliAODPWG4Particle *p2); //Check MC genealogy\r
59   Bool_t  IsInPi0Band(Double_t m, Double_t pt); //Check if invariant mass is within pi0 peak\r
60 \r
61 private:\r
62 \r
63   AliPHOSGeoUtils *fgeom;        //!PHOS/EMCAL geometry\r
64   AliStack        *fStack ;      //!Pointer to MC stack\r
65   Int_t            fDebug ;      //Debug flag 1-few prints,2-more, 3-all prints\r
66   Bool_t           fPHOS ;       //Choose Calorimeter: PHOS/EMCAL\r
67 \r
68   // task parameters\r
69   Float_t   fPhotonId ;          // threshold for photon identification (Bayesian)\r
70   Float_t   fMinEnergyCut;       // min energy of partner photon\r
71   Float_t   fPi0Mean_p0;         // Parameterization of pi0 mass:\r
72   Float_t   fPi0Mean_p1;         // m_mean_pi0 = p[0] + p[1]*pt + p[2]*pt^2 + p[3]*pt^3\r
73   Float_t   fPi0Mean_p2;         //\r
74   Float_t   fPi0Mean_p3;         //\r
75 \r
76   Float_t   fPi0Sigma_p0;        // sigma_m_pi0 = sqrt ( p0*p0/x + p1*p1 + p2*p2/x/x)\r
77   Float_t   fPi0Sigma_p1;\r
78   Float_t   fPi0Sigma_p2;\r
79 \r
80   //Fiducial area parameters\r
81   Float_t fZmax ;\r
82   Float_t fZmin ;\r
83   Float_t fPhimax ;\r
84   Float_t fPhimin ;\r
85 \r
86   TList   * fOutputList ;        //! output data list\r
87   TList   * fEventList ;         //!  event list for mixed InvMass\r
88 \r
89   // Histograms\r
90   //Reconstructed spectra\r
91   TH1D    * fhRecAll;                  // Spectrum of all reconstructed particles\r
92   TH1D    * fhRecAllArea1;             // Spectrum of rec particles in Fid. Area 1\r
93   TH1D    * fhRecAllArea2;             // Spectrum of rec particles in Fid. Area 2\r
94   TH1D    * fhRecAllArea3;             // Spectrum of rec particles in Fid. Area 3\r
95 \r
96   //Sort registered particles spectra according MC information\r
97   TH1D    * fhRecPhoton;               // Spectrum of rec. with primary==22 and no PID criteria\r
98   TH1D    * fhRecOther;                // Spectrum of rec. with primary!=22 and no PID criteria\r
99   TH1D    * fhRecPhotonPID[4];         // Spectrum of rec. with primary==22 and different PID criteria\r
100   TH1D    * fhRecOtherPID[4];          // Spectrum of rec. with primary!=22 and different PID criteria\r
101   TH1D    * fhRecPhotPi0 ;             // Spectrum of rec. photons from pi0 decays\r
102   TH1D    * fhRecPhotEta ;             // Spectrum of rec. photons from eta decays\r
103   TH1D    * fhRecPhotOmega ;           // Spectrum of rec. photons from omega decays\r
104   TH1D    * fhRecPhotEtapr ;           // Spectrum of rec. photons from eta prime decays\r
105   TH1D    * fhRecPhotConv ;            // Spectrum of rec. photons from conversion\r
106   TH1D    * fhRecPhotHadron ;          // Spectrum of rec. photons from hadron-matter interactions\r
107   TH1D    * fhRecPhotDirect ;          // Spectrum of rec. photons direct or no primary\r
108   TH1D    * fhRecPhotOther ;           // Spectrum of rec. photons from other hadron decays\r
109 \r
110   //MC tagging: reasons of partner loss etc.\r
111   TH1D  * fhDecWMCPartner ;         //pi0 decay photon which partner should be registered according to MC\r
112   TH1D  * fhDecWMissedPartnerNotPhoton ; //Decay photon with missed non-photon partner\r
113   TH1D  * fhDecWMissedPartnerAll ;  //Decay photons with partner missed due to some reason (sum of below)\r
114   TH1D  * fhDecWMissedPartnerEmin;  //Decay photons with partner missed due to low energy\r
115   TH1D  * fhDecWMissedPartnerConv;  //Decay photons with partner missed due to conversion\r
116   TH1D  * fhDecWMissedPartnerGeom0; //Decay photons with partner missed due geometry\r
117   TH1D  * fhDecWMissedPartnerGeom1; //Decay photons with partner missed due geometry Fid. area. 1\r
118   TH1D  * fhDecWMissedPartnerGeom2; //Decay photons with partner missed due geometry Fid. area. 2\r
119   TH1D  * fhDecWMissedPartnerGeom3; //Decay photons with partner missed due geometry Fid. area. 3\r
120 \r
121   //MC tagging: Decay partners spectra\r
122   TH1D  * fhPartnerMCReg ;       //Spectrum of decay partners which should be registered (MC)\r
123   TH1D  * fhPartnerMissedEmin ;  //Spectrum of decay partners lost due to Emin cut  \r
124   TH1D  * fhPartnerMissedConv ;  //Spectrum of decay partners lost due to conversion\r
125   TH1D  * fhPartnerMissedGeo  ;  //Spectrum of decay partners lost due to acceptance\r
126 \r
127   //Tagging\r
128   TH1D  * fhTaggedAll ;      //Spectrum of all tagged photons\r
129   TH1D  * fhTaggedArea1 ;    //Spectrum of all tagged photons Fid. area1\r
130   TH1D  * fhTaggedArea2 ;    //Spectrum of all tagged photons Fid. area2\r
131   TH1D  * fhTaggedArea3 ;    //Spectrum of all tagged photons Fid. area3\r
132   TH1D  * fhTaggedPID[4] ;   //Spectrum of tagged photons for different PID criteria\r
133   TH1D  * fhTaggedMult ;     //Spectrum of multiply tagged photons\r
134 \r
135   //Tagging: use MC information if available\r
136   TH1D *  fhTaggedMCTrue ;     //Spectrum of correctly tagged pi0 decay photons\r
137   TH1D *  fhMCMissedTagging ;  //Spectrum of pi0 decay photons missed tagging due to wrong pair mass\r
138   TH1D *  fhMCFakeTagged ;     //Spectrum of photons wrongly tagged according to MC\r
139 \r
140   //Invariant mass distributions for fake corrections\r
141   TH2D * fhInvMassReal ;    //Two-photon inv. mass vs first photon pt\r
142   TH2D * fhInvMassMixed ;   //Two-photon inv. mass vs first photon pt\r
143   TH2D * fhMCMissedTaggingMass ; //Inv mass of pairs missed tagging\r
144   \r
145   //Conversion and annihilation radius distributions\r
146   TH1D * fhConversionRadius ;      // Radis of photon production (conversion)\r
147   TH1D * fhInteractionRadius ;     // Radis of photon production (hadron interaction)\r
148 \r
149   TH1D    * fhEvents;                  //  number of processed Events\r
150  \r
151   ClassDef(AliAnalysisTaskTaggedPhotons, 1);   // a PHOS photon analysis task \r
152 };\r
153 #endif // ALIANALYSISTASKTAGGEDPHOTONS_H\r