]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/PHOSTasks/PHOS_pp_pi0/AliCaloPhoton.h
Satoshi request: fTrig and fTime
[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    Double_t EMCx(void)const {return fX;}
30    Double_t EMCy(void)const {return fY;}
31    Double_t EMCz(void)const {return fZ;}
32    Int_t    Module(void)const{return fModule;}
33    Int_t    DistToBad()const  {return fBadDist ;}
34    Int_t    GetNCells()const { return fNCells ;} 
35    Double_t GetTime(void) const {return fTime ;}
36    void SetTime(Double_t t) {fTime=t ;}
37
38    Bool_t   IsDispOK(void)const {return fDisp;}
39    Bool_t   IsDisp2OK(void)const {return fDisp2;} //stricter cut
40    Bool_t   IsTOFOK(void)const {return fTof;}
41    Bool_t   IsCPVOK(void)const {return fCpv;}
42    Bool_t   IsCPV2OK(void)const {return fCpv2;}
43    Bool_t   IsIsolated(void)const{return fIsIsolated ;}
44    Bool_t   IsTagged(void) const{return fIsTagged ;} //check if this photon is tagged
45    Bool_t   IsTagged(Int_t i,Int_t k) const{return fIsTagged_reg[i][k] ;} //check if this photon is tagged
46    Bool_t   IsPIDOK(const Int_t ipid) const ;
47    Bool_t   IsPhoton()const {return fIsPhoton ;} //check if this particle is indeed photon (this bit is set with MC stack info
48    Bool_t   IsntUnfolded()const{return fUnfolded;}
49    Int_t    IsConvertedPartner(){ if(fConvertedPartner == 1) return 1; else return 0; }
50    Bool_t   IsTrig(void)const{ return fTrig ; }
51    Double_t GetWeight(void){return fWeight;}
52
53    //ConvertedPair bit is set for events when photon's FirstMother is not e+/e- but pi0, but after pi0 decayed
54 //there is conversion of one or both of the photons and results of their conversion are registered by PHOS.
55 //This process is marked as tagged photons but actually the energy of photons is changed and pi0 can't be
56 //correctly found.
57    Int_t IsConverted(){ if(fConverted == 1) return 1; else return 0; }
58 //Converted bit is set if this photon originate from e+/e- conversion on medium
59    Int_t IsPi0Decay(){ if(fPi0Decayflag == 1) return 1; else return 0; }
60 //Pi0Decayflag is set if this photon originate from pi0 decay
61    void Pi0Decay(Int_t flag){ fPi0Decayflag=flag; }
62    void Pi0Id(Int_t id){ fPi0Id=id; }
63 //Id of pi0 from which this photon is decayed (to check if 2 photons originate from the same pi0 or not)
64
65
66    void SetMomV2(TLorentzVector * p){fMomV2=(*p);}
67    void SetNCells(Int_t n){fNCells=n;}
68    void SetConverted(Int_t flag){ fConverted=flag; }
69    Int_t ComparePi0Ids( AliCaloPhoton *phot) { if(AliCaloPhoton::fPi0Id!=0 && (*phot).fPi0Id !=0 && AliCaloPhoton::fPi0Id == (*phot).fPi0Id) return 1; else return 0; }
70    void SetConvertedPartner(Int_t flag){ fConvertedPartner=flag; }
71    void SetPhoton(Int_t flag){ fIsPhoton=flag; }
72    void SetDispBit(Bool_t chi2){fDisp = chi2 ;} 
73    void SetDisp2Bit(Bool_t chi2){fDisp2 = chi2 ;} 
74    void SetTOFBit(Bool_t tof){fTof = tof ;} 
75    void SetCPVBit(Bool_t cpv){fCpv = cpv; }
76    void SetCPV2Bit(Bool_t cpv){fCpv2 = cpv; }
77    void SetPCAPID(Bool_t pca){fPCA = pca;}
78    void SetTrig(Bool_t trig){fTrig=trig;}
79    void SetEMCx(Double_t x){fX = x ;} 
80    void SetEMCy(Double_t y){fY = y ;} 
81    void SetEMCz(Double_t z){fZ = z ;} 
82    void SetModule(Int_t mod){fModule = mod ;} 
83    void SetDistToBad(Int_t dist){fBadDist=dist;} 
84    void SetTagged(Bool_t bit){fIsTagged=bit;}
85    void SetTagged(Bool_t bit,Int_t i,Int_t k){fIsTagged_reg[i][k]=bit;}
86    void SetIsolated(Bool_t bit){fIsIsolated=bit;}
87    void SetPartnerPt(Double_t pt){fPartnerPt=pt;}
88    void SetPrimary(Int_t label){fPrimary=label;}
89    void SetUnfolded(Bool_t wasNotUnfolded){fUnfolded=wasNotUnfolded;} 
90    void SetWeight(Double_t w){fWeight=w;}
91
92    void SetCluster(AliVCluster* cluster) { fCluster = cluster; }
93    AliVCluster* GetCluster() { return fCluster; }
94
95    void SetLambdas(Double_t l1,Double_t l2){fLambda0=l1; fLambda1=l2;}
96    Double_t GetLambda1(void){return fLambda0;}
97    Double_t GetLambda2(void){return fLambda1;}
98
99    Int_t GetPrimary(){return fPrimary;}
100    Double_t GetPartnerPt(){return fPartnerPt;}  
101 private:
102   AliCaloPhoton(const AliCaloPhoton&); // not implemented
103   AliCaloPhoton& operator=(const AliCaloPhoton&);
104   
105   TLorentzVector fMomV2 ; //Alternative momentum
106   Bool_t    fDisp ;   //Dispersion bit
107   Bool_t    fDisp2 ;  //Strict Dispersion bit
108   Bool_t    fTof ;    //TOF bit
109   Bool_t    fCpv ;    //Charged bit
110   Bool_t    fCpv2 ;   //Strict Charged bit
111   Bool_t    fPCA ;    //Principal Component Analysis bit
112   Bool_t    fTrig ;      //If this photon fired trigger
113   Bool_t    fIsTagged;   //If it is tagged 
114   Bool_t    fIsTagged_reg[10][20];   //If it is tagged 
115   Bool_t    fIsIsolated ; //it is isolated
116   Bool_t    fIsPhoton; //If it is really photon or not
117   Bool_t    fUnfolded;  //True if was not unfolded
118   Double_t  fX ;        //Cluster coordinates in ALICE ref system 
119   Double_t  fY ;        //Cluster coordinates in ALICE ref system
120   Double_t  fZ ;        //Cluster coordinates in ALICE ref system
121   Double_t  fLambda0 ;  //Short and 
122   Double_t  fLambda1 ;  //Long dispersion axis
123   Double_t  fTime ;     //time of the cluster
124   Int_t     fModule ;   //Module number
125   Int_t     fBadDist ;  //Distance to bad module in module units
126   Int_t     fNCells ;   //Number of cells in cluster
127   Int_t     fPi0Decayflag; //if this photon is from pi0 decay (from simulation)
128   Int_t     fPi0Id;
129   Int_t     fConverted; //If this photon originated from convertion on material (i.e. its primary is electron)
130   Int_t     fConvertedPartner;
131   Double_t  fPartnerPt;
132   Double_t  fWeight ;   //Weight of parent particle
133   Int_t     fPrimary;   //Primary label
134   AliVCluster* fCluster; //! Originating Cluster the Photon Candidate is based on
135
136   ClassDef(AliCaloPhoton,5);
137
138 };
139
140 #endif // #ifdef ALICALOPHOTON_H
141
142