]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/PHOSTasks/PHOS_pp_pi0/AliCaloPhoton.h
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / PWGGA / PHOSTasks / PHOS_pp_pi0 / AliCaloPhoton.h
1 #ifndef ALICALOPHOTON_H
2 #define ALICALOPHOTON_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5 /* $Id$ */
6  
7 //_________________________________________________________________________
8 // Class to fill two-photon invariant mass hisograms
9 // to be used to extract pi0 raw yield.
10 //
11 //-- Author: Dmitri Peressounko (RRC "KI")
12 // This class contains all (minimal) necessary information about photon to 
13 // calculate invarint mass distr for pi0
14 // and for tagging and isolation analysis
15
16 class AliVCluster;
17
18 #include "TLorentzVector.h"
19
20 class AliCaloPhoton :public TLorentzVector{
21   
22  public:
23   
24   AliCaloPhoton() ;
25   AliCaloPhoton(Double_t px,Double_t py,Double_t pz,Double_t E) ; 
26   ~AliCaloPhoton(){} 
27
28    const TLorentzVector * GetMomV2()const{return &fMomV2;}
29    Int_t    DistToBad() const {return fBadDist ;}
30    Double_t EMCx(void)  const {return fX;}
31    Double_t EMCy(void)  const {return fY;}
32    Double_t EMCz(void)  const {return fZ;}
33    Int_t    Module(void)const {return fModule;}
34    Int_t    GetBC(void) const {return fBC;}
35    Int_t    GetFiducialArea(void) const {return fFiducialArea ;}
36    Int_t    GetIsolationTag(void) const {return fIsolationTag ;}
37    Double_t GetLambda1(void) const {return fLambda0;}
38    Double_t GetLambda2(void) const {return fLambda1;}
39    Int_t    GetNCells() const { return fNCells ;} 
40    Int_t    GetPrimary()const {return fPrimary;}
41    Int_t    GetPrimaryAtVertex()  const {return fPrimaryAtVertex;}
42    Double_t GetPartnerPt(void)    const {return fPartnerPt;}  
43    Int_t    GetTagInfo(void) const {return fTagInfo;}
44    Double_t GetTime(void)    const {return fTime ;}
45    Double_t GetWeight(void)  const {return fWeight;}
46
47    Int_t    IsConvertedPartner() const { if(fConvertedPartner == 1) return 1; else return 0; }
48    Bool_t   IsCPVOK(void)   const {return fCpv;}
49    Bool_t   IsCPV2OK(void)  const {return fCpv2;}
50    Bool_t   IsDispOK(void)  const {return fDisp;}
51    Bool_t   IsDisp2OK(void) const {return fDisp2;} //stricter cut
52    Bool_t   IsIsolated(void)const {return fIsIsolated ;}
53    Bool_t   IsPhoton() const {return fIsPhoton ;} //check if this particle is indeed photon (this bit is set with MC stack info
54    Bool_t   IsPIDOK(const Int_t ipid) const ;
55    Bool_t   IsTagged(void)  const {return fIsTagged ;} //check if this photon is tagged
56    Bool_t   IsTagged(Int_t i,Int_t k) const {return fIsTagged_reg[i][k] ;} //check if this photon is tagged
57    Bool_t   IsTOFOK(void)   const {return fTof;}
58    Bool_t   IsTrig(void)    const{ return fTrig ; }
59    Bool_t   IsntUnfolded(void)const{return fUnfolded;}
60
61    //ConvertedPair bit is set for events when photon's FirstMother is not e+/e- but pi0, but after pi0 decayed
62 //there is conversion of one or both of the photons and results of their conversion are registered by PHOS.
63 //This process is marked as tagged photons but actually the energy of photons is changed and pi0 can't be
64 //correctly found.
65    Int_t IsConverted(void) const { if(fConverted == 1) return 1; else return 0; }
66 //Converted bit is set if this photon originate from e+/e- conversion on medium
67    Int_t IsPi0Decay(void) const { if(fPi0Decayflag == 1) return 1; else return 0; }
68 //Pi0Decayflag is set if this photon originate from pi0 decay
69    void Pi0Decay(Int_t flag){ fPi0Decayflag=flag; }
70    void Pi0Id(Int_t id){ fPi0Id=id; }
71 //Id of pi0 from which this photon is decayed (to check if 2 photons originate from the same pi0 or not)
72
73    Int_t ComparePi0Ids( AliCaloPhoton *phot) { if(AliCaloPhoton::fPi0Id!=0 && (*phot).fPi0Id !=0 && AliCaloPhoton::fPi0Id == (*phot).fPi0Id) return 1; else return 0; }
74
75    void SetBC(Int_t bc){fBC = bc;}
76    void SetCluster(AliVCluster* cluster) { fCluster = cluster; }
77    void SetConverted(Int_t flag){ fConverted=flag; }
78    void SetConvertedPartner(Int_t flag){ fConvertedPartner=flag; }
79    void SetCPVBit(Bool_t cpv){fCpv = cpv; }
80    void SetCPV2Bit(Bool_t cpv){fCpv2 = cpv; }
81    void SetDispBit(Bool_t chi2){fDisp = chi2 ;} 
82    void SetDisp2Bit(Bool_t chi2){fDisp2 = chi2 ;} 
83    void SetDistToBad(Int_t dist){fBadDist=dist;} 
84    void SetEMCx(Double_t x){fX = x ;} 
85    void SetEMCy(Double_t y){fY = y ;} 
86    void SetEMCz(Double_t z){fZ = z ;} 
87    void SetFiducialArea(Int_t a){fFiducialArea=a ;}
88    void SetIsolationTag(Int_t tag){fIsolationTag=tag ;}
89    void SetIsolated(Bool_t bit){fIsIsolated=bit;}
90    void SetLambdas(Double_t l1,Double_t l2){fLambda0=l1; fLambda1=l2;}
91    void SetModule(Int_t mod){fModule = mod ;} 
92    void SetMomV2(TLorentzVector * p){fMomV2=(*p);}
93    void SetNCells(Int_t n){fNCells=n;}
94    void SetPartnerPt(Double_t pt){fPartnerPt=pt;}
95    void SetPCAPID(Bool_t pca){fPCA = pca;}
96    void SetPhoton(Int_t flag){ fIsPhoton=flag; }
97    void SetPrimary(Int_t label){fPrimary=label;}
98    void SetPrimaryAtVertex(Int_t label){fPrimaryAtVertex=label;}
99    void SetTagged(Bool_t bit){fIsTagged=bit;}
100    void SetTagged(Bool_t bit,Int_t i,Int_t k){fIsTagged_reg[i][k]=bit;}
101    void SetTagInfo(Int_t bits){fTagInfo=bits;}
102    void SetTime(Double_t t) {fTime=t ;}
103    void SetTOFBit(Bool_t tof){fTof = tof ;} 
104    void SetTrig(Bool_t trig){fTrig=trig;}
105    void SetUnfolded(Bool_t wasNotUnfolded){fUnfolded=wasNotUnfolded;} 
106    void SetWeight(Double_t w){fWeight=w;}
107
108    AliVCluster* GetCluster() { return fCluster; }
109
110 private:
111   AliCaloPhoton(const AliCaloPhoton&); // not implemented
112   AliCaloPhoton& operator=(const AliCaloPhoton&);
113   
114   TLorentzVector fMomV2 ; //Alternative momentum
115   Bool_t    fDisp ;   //Dispersion bit
116   Bool_t    fDisp2 ;  //Strict Dispersion bit
117   Bool_t    fTof ;    //TOF bit
118   Bool_t    fCpv ;    //Charged bit
119   Bool_t    fCpv2 ;   //Strict Charged bit
120   Bool_t    fPCA ;    //Principal Component Analysis bit
121   Bool_t    fTrig ;      //If this photon fired trigger
122   Bool_t    fIsTagged;   //If it is tagged 
123   Bool_t    fIsTagged_reg[10][20];   //If it is tagged 
124   Bool_t    fIsIsolated ; //it is isolated
125   Bool_t    fIsPhoton; //If it is really photon or not
126   Bool_t    fUnfolded;  //True if was not unfolded
127   Int_t     fModule ;   //Module number
128   Int_t     fBC ;       //Bunch crossing number (BC=0 is main-main collision)
129   Int_t     fBadDist ;  //Distance to bad module in module units
130   Int_t     fNCells ;   //Number of cells in cluster
131   Int_t     fFiducialArea ; //class of fiducial areas
132   Int_t     fPi0Decayflag; //if this photon is from pi0 decay (from simulation)
133   Int_t     fPi0Id;
134   Int_t     fConverted; //If this photon originated from convertion on material (i.e. its primary is electron)
135   Int_t     fConvertedPartner;
136   Int_t     fIsolationTag ;
137   Int_t     fTagInfo ;
138   Int_t     fPrimary;   //Primary entered PHOS
139   Int_t     fPrimaryAtVertex;   //Primary at vertex
140   Double_t  fX ;        //Cluster coordinates in ALICE ref system 
141   Double_t  fY ;        //Cluster coordinates in ALICE ref system
142   Double_t  fZ ;        //Cluster coordinates in ALICE ref system
143   Double_t  fLambda0 ;  //Short and 
144   Double_t  fLambda1 ;  //Long dispersion axis
145   Double_t  fTime ;     //time of the cluster
146   Double_t  fPartnerPt;
147   Double_t  fWeight ;   //Weight of parent particle
148   AliVCluster* fCluster; //! Originating Cluster the Photon Candidate is based on
149
150   ClassDef(AliCaloPhoton,7);
151
152 };
153
154 #endif // #ifdef ALICALOPHOTON_H
155
156