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 */
7 //_________________________________________________________________________
8 // Class to fill two-photon invariant mass hisograms
9 // to be used to extract pi0 raw yield.
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
18 #include "TLorentzVector.h"
20 class AliCaloPhoton :public TLorentzVector{
25 AliCaloPhoton(Double_t px,Double_t py,Double_t pz,Double_t E) ;
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;}
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;}
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
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)
73 Int_t ComparePi0Ids( AliCaloPhoton *phot) { if(AliCaloPhoton::fPi0Id!=0 && (*phot).fPi0Id !=0 && AliCaloPhoton::fPi0Id == (*phot).fPi0Id) return 1; else return 0; }
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;}
108 AliVCluster* GetCluster() { return fCluster; }
111 AliCaloPhoton(const AliCaloPhoton&); // not implemented
112 AliCaloPhoton& operator=(const AliCaloPhoton&);
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)
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 ;
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
147 Double_t fWeight ; //Weight of parent particle
148 AliVCluster* fCluster; //! Originating Cluster the Photon Candidate is based on
150 ClassDef(AliCaloPhoton,7);
154 #endif // #ifdef ALICALOPHOTON_H