dfff4b29 |
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 | |
17 | #include "TLorentzVector.h" |
18 | |
19 | class AliCaloPhoton :public TLorentzVector{ |
20 | |
21 | public: |
22 | |
23 | AliCaloPhoton() ; |
24 | AliCaloPhoton(Double_t px,Double_t py,Double_t pz,Double_t E) ; |
25 | ~AliCaloPhoton(){} |
26 | |
27 | const TLorentzVector * GetMomV2()const{return &fMomV2;} |
28 | Double_t EMCx(void)const {return fZ;} |
29 | Double_t EMCy(void)const {return fZ;} |
30 | Double_t EMCz(void)const {return fZ;} |
31 | Int_t Module(void)const{return fModule;} |
32 | Int_t DistToBad()const {return fBadDist ;} |
33 | Int_t GetNCells()const { return fNCells ;} |
34 | |
35 | Bool_t IsDispOK(void)const {return fDisp;} |
36 | Bool_t IsTOFOK(void)const {return fTof;} |
37 | Bool_t IsCPVOK(void)const {return fCpv;} |
38 | Bool_t IsIsolated(void)const{return fIsIsolated ;} |
39 | Bool_t IsTagged(void) const{return fIsTagged ;} //check if this photon is tagged |
40 | Bool_t IsTagged(Int_t i,Int_t k) const{return fIsTagged_reg[i][k] ;} //check if this photon is tagged |
41 | Bool_t IsPIDOK(const Int_t ipid) const ; |
42 | Bool_t IsPhoton()const {return fIsPhoton ;} //check if this particle is indeed photon (this bit is set with MC stack info |
43 | Int_t IsConvertedPartner(){ if(fConvertedPartner == 1) return 1; else return 0; } |
44 | //ConvertedPair bit is set for events when photon's FirstMother is not e+/e- but pi0, but after pi0 decayed |
45 | //there is conversion of one or both of the photons and results of their conversion are registered by PHOS. |
46 | //This process is marked as tagged photons but actually the energy of photons is changed and pi0 can't be |
47 | //correctly found. |
48 | Int_t IsConverted(){ if(fConverted == 1) return 1; else return 0; } |
49 | //Converted bit is set if this photon originate from e+/e- conversion on medium |
50 | Int_t IsPi0Decay(){ if(fPi0Decayflag == 1) return 1; else return 0; } |
51 | //Pi0Decayflag is set if this photon originate from pi0 decay |
52 | void Pi0Decay(Int_t flag){ fPi0Decayflag=flag; } |
53 | void Pi0Id(Int_t id){ fPi0Id=id; } |
54 | //Id of pi0 from which this photon is decayed (to check if 2 photons originate from the same pi0 or not) |
55 | |
56 | |
57 | void SetMomV2(TLorentzVector * p){fMomV2=(*p);} |
58 | void SetNCells(Int_t n){fNCells=n;} |
59 | void SetConverted(Int_t flag){ fConverted=flag; } |
60 | Int_t ComparePi0Ids( AliCaloPhoton *phot) { if(AliCaloPhoton::fPi0Id!=0 && (*phot).fPi0Id !=0 && AliCaloPhoton::fPi0Id == (*phot).fPi0Id) return 1; else return 0; } |
61 | void SetConvertedPartner(Int_t flag){ fConvertedPartner=flag; } |
62 | void SetPhoton(Int_t flag){ fIsPhoton=flag; } |
63 | void SetDispBit(Bool_t chi2){fDisp = chi2 ;} |
64 | void SetTOFBit(Bool_t tof){fTof = tof ;} |
65 | void SetCPVBit(Bool_t cpv){fCpv = cpv; } |
66 | void SetPCAPID(Bool_t pca){fPCA = pca;} |
67 | void SetTrig(Bool_t trig){fTrig=trig;} |
68 | void SetEMCx(Double_t x){fX = x ;} |
69 | void SetEMCy(Double_t y){fY = y ;} |
70 | void SetEMCz(Double_t z){fZ = z ;} |
71 | void SetModule(Int_t mod){fModule = mod ;} |
72 | void SetDistToBad(Int_t dist){fBadDist=dist;} |
73 | void SetTagged(Bool_t bit){fIsTagged=bit;} |
74 | void SetTagged(Bool_t bit,Int_t i,Int_t k){fIsTagged_reg[i][k]=bit;} |
75 | void SetIsolated(Bool_t bit){fIsIsolated=bit;} |
76 | void SetPartnerPt(Double_t pt){fPartnerPt=pt;} |
77 | void SetPrimary(Int_t label){fPrimary=label;} |
78 | |
79 | Int_t GetPrimary(){return fPrimary;} |
80 | Double_t GetPartnerPt(){return fPartnerPt;} |
81 | private: |
82 | TLorentzVector fMomV2 ; //Alternative momentum |
83 | Bool_t fDisp ; //Dispersion bit |
84 | Bool_t fTof ; //TOF bit |
85 | Bool_t fCpv ; //Charged bit |
86 | Bool_t fPCA ; //Principal Component Analysis bit |
87 | Bool_t fTrig ; //If this photon fired trigger |
88 | Bool_t fIsTagged; //If it is tagged |
89 | Bool_t fIsTagged_reg[10][20]; //If it is tagged |
90 | Bool_t fIsIsolated ; //it is isolated |
91 | Bool_t fIsPhoton; //If it is really photon or not |
92 | Double_t fX ; //Cluster coordinates in ALICE ref system |
93 | Double_t fY ; //Cluster coordinates in ALICE ref system |
94 | Double_t fZ ; //Cluster coordinates in ALICE ref system |
95 | Int_t fModule ; //Module number |
96 | Int_t fBadDist ; //Distance to bad module in module units |
97 | Int_t fNCells ; //Number of cells in cluster |
98 | Int_t fPi0Decayflag; //if this photon is from pi0 decay (from simulation) |
99 | Int_t fPi0Id; |
100 | Int_t fConverted; //If this photon originated from convertion on material (i.e. its primary is electron) |
101 | Int_t fConvertedPartner; |
102 | Double_t fPartnerPt; |
103 | Int_t fPrimary; //Primary label |
104 | |
105 | ClassDef(AliCaloPhoton,1) |
106 | |
107 | }; |
108 | |
109 | #endif // #ifdef ALICALOPHOTON_H |
110 | |
111 | |