AliPhysics  3b4a69f (3b4a69f)
AliAODConversionPhoton.h
Go to the documentation of this file.
1 #ifndef ALIAODCONVERSIONPHOTON_H
2 #define ALIAODCONVERSIONPHOTON_H
3 
7 
9 
10  public:
11 
13  kIsPhoton = 0x001, kIsElectron = 0x002, kIsConversion = 0x004, kIsConversionFullyContained = 0x008,
14  kIsMerged = 0x010, kIsMergedPartConv = 0x020, kIsDalitz = 0x040, kIsDalitzMerged = 0x080,
16  };
17 
18  //Constructors
21  AliAODConversionPhoton(TLorentzVector *vec);
22 
23  //Copy Constructor
25  //assignment operator
27 
28  //Destructor
29  virtual ~AliAODConversionPhoton();
30 
31  // Overwrite GetLabelFunctions to Make it accessible via AliAODConversionParticle
35 
36  virtual Double_t GetPhotonMass() const {return AliAODConversionParticle::M();}
37  virtual Double_t GetPhotonPt() const {return AliAODConversionParticle::Pt();}
38  virtual Double_t GetPhotonP() const {return AliAODConversionParticle::P();}
39  virtual Double_t GetPhotonEta() const {return AliAODConversionParticle::Eta();}
40  virtual Double_t GetPhotonTheta() const {return AliAODConversionParticle::Theta();}
42  virtual Double_t GetPx() const { return AliAODConversionParticle::Px();}
43  virtual Double_t GetPy() const { return AliAODConversionParticle::Py();}
44  virtual Double_t GetPz() const { return AliAODConversionParticle::Pz();}
45  void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex* primVertex);
46  void SetMassToZero() { SetE(P()); }
47 
49  void SetUseForMesonPair(Bool_t useForMeson) {fUseForMesonPair=useForMeson;}
51 
53  fCaloPhoton = 0;
55  }
56 
59 
62  void SetCaloPhotonMCLabel(Int_t i, Int_t labelCaloPhoton){fCaloPhotonMCLabels[i] = labelCaloPhoton;}
68 
69  void SetCaloPhotonMCFlags(AliMCEvent *mcEvent, Bool_t enableSort);
70  void SetCaloPhotonMCFlagsAOD(AliVEvent* event, Bool_t enableSort);
71  void SetCaloClusterRef(Long_t ref){fCaloClusterRef = ref;}
72  Long_t GetCaloClusterRef()const {return fCaloClusterRef;}
73  void PrintCaloMCLabelsAndInfo(AliMCEvent *mcEvent);
74  void PrintCaloMCFlags ();
75 
76  //Calo cluster MC identifiers
77  Bool_t IsLargestComponentPhoton(){return fCaloPhotonMCFlags&kIsPhoton;} // largest contribution to cluster is photon
78  Bool_t IsLargestComponentElectron(){return fCaloPhotonMCFlags&kIsElectron;} // largest contribution to cluster is electron
79  Bool_t IsConversion(){return fCaloPhotonMCFlags&kIsConversion;} // largest contribution to cluster is converted electron
80  Bool_t IsConversionFullyContained(){return fCaloPhotonMCFlags&kIsConversionFullyContained;} // largest contribution to cluster is converted electron & other electron has been found in cluster as well
81  Bool_t IsMerged(){return fCaloPhotonMCFlags&kIsMerged;} // largest contribution to cluster is photon, second photon or electron from dalitz decay is found in cluster as well
82  Bool_t IsMergedPartConv(){return fCaloPhotonMCFlags&kIsMergedPartConv;} // cluster contains more than 1 particle belonging to the same mother particle (i.e. pi0, eta ...)
83  // & at least one of the decays was a conversion
84  Bool_t IsDalitz(){return fCaloPhotonMCFlags&kIsDalitz;} // cluster contains particle from Dalitz decay
85  Bool_t IsDalitzMerged(){return fCaloPhotonMCFlags&kIsDalitzMerged;} // cluster contains particle from Dalitz decay & more than one particle of this decay is contained in cluster
86  Bool_t IsPhotonWithElecMother(){return fCaloPhotonMCFlags&kIsPhotonWithElecMother;} // largest contribution to cluster is photon which stems from an electron (i.e. radiation)
87  Bool_t IsShower(){return fCaloPhotonMCFlags&kIsShower;} // largest contribution to cluster seems to stem from a shower
88  Bool_t IsEMNonLeading(){return !(fCaloPhotonMCFlags&kIsPhoton) && !(fCaloPhotonMCFlags&kIsElectron);} // largest contribution is from hadron
89  Bool_t IsSubLeadingEM(){return fCaloPhotonMCFlags&kIsSubLeadingEM;} // cluster contains at least one electron or photon from a pi0 or eta in subleading contribution
90 
91  Bool_t IsElectronFromFragPhoton(){return fCaloPhotonMCFlags&kIsElectronFromFragPhoton;} // largest contribution to cluster is from electron, but the converted photon is or stems from fragmentation photon ( q -> q gamma)
93  if (!fCaloPhoton && fCaloPhotonMCFlags == 1) return kTRUE;
94  else return kFALSE;
95  }
97 
98  Long_t fCaloPhotonMCLabels[50];
110 
111  ClassDef(AliAODConversionPhoton,7)
112 };
113 
114 
115 #endif
116 
117 
118 
virtual Double_t GetPy() const
virtual Double_t GetPhotonPhi() const
void SetUseForMesonPair(Bool_t useForMeson)
void SetCaloClusterRef(Long_t ref)
#define P(T, U, S)
double Double_t
Definition: External.C:58
void SetCaloPhotonMCFlags(AliMCEvent *mcEvent, Bool_t enableSort)
virtual Double_t GetPz() const
Double_t mass
virtual Double_t GetPhotonTheta() const
Float_t GetDCAzToPrimVtx() const
virtual Int_t GetLabel(Int_t i) const
void SetCaloPhotonMCLabel(Int_t i, Int_t labelCaloPhoton)
AliAODConversionPhoton & operator=(const AliAODConversionPhoton &g)
Int_t GetCaloPhotonMotherMCLabel(Int_t i)
virtual Int_t GetLabel1() const
void PrintCaloMCLabelsAndInfo(AliMCEvent *mcEvent)
virtual Double_t GetPhotonP() const
int Int_t
Definition: External.C:63
float Float_t
Definition: External.C:68
Int_t GetTrackLabel(Int_t i) const
void SetInvMassPair(Float_t mass)
Float_t GetDCArToPrimVtx() const
virtual Double_t GetPhotonEta() const
virtual Int_t GetLabel2() const
virtual Double_t GetPx() const
void SetNCaloPhotonMCLabels(Int_t nLabels)
virtual Double_t GetPhotonPt() const
bool Bool_t
Definition: External.C:53
void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex *primVertex)
void SetCaloPhotonMCFlagsAOD(AliVEvent *event, Bool_t enableSort)
virtual Double_t GetPhotonMass() const