AliPhysics  master (68a99cd)
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;}
73 
74  void SetCaloPhotonMCFlags(AliMCEvent *mcEvent, Bool_t enableSort, Bool_t mergedAnalysis = kFALSE, AliVCluster* cluster = NULL);
75  void SetCaloPhotonMCFlagsAOD(AliVEvent* event, Bool_t enableSort, Bool_t mergedAnalysis = kFALSE, AliVCluster* cluster = NULL);
76  void SetCaloClusterRef(Long_t ref){fCaloClusterRef = ref;}
77  Long_t GetCaloClusterRef()const {return fCaloClusterRef;}
78  void PrintCaloMCLabelsAndInfo(AliMCEvent *mcEvent);
79  void PrintCaloMCFlags ();
80 
81  //Calo cluster MC identifiers
82  Bool_t IsLargestComponentPhoton(){return fCaloPhotonMCFlags&kIsPhoton;} // largest contribution to cluster is photon
83  Bool_t IsLargestComponentElectron(){return fCaloPhotonMCFlags&kIsElectron;} // largest contribution to cluster is electron
84  Bool_t IsConversion(){return fCaloPhotonMCFlags&kIsConversion;} // largest contribution to cluster is converted electron
85  Bool_t IsConversionFullyContained(){return fCaloPhotonMCFlags&kIsConversionFullyContained;} // largest contribution to cluster is converted electron & other electron has been found in cluster as well
86  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
87  Bool_t IsMergedPartConv(){return fCaloPhotonMCFlags&kIsMergedPartConv;} // cluster contains more than 1 particle belonging to the same mother particle (i.e. pi0, eta ...)
88  // & at least one of the decays was a conversion
89  Bool_t IsDalitz(){return fCaloPhotonMCFlags&kIsDalitz;} // cluster contains particle from Dalitz decay
90  Bool_t IsDalitzMerged(){return fCaloPhotonMCFlags&kIsDalitzMerged;} // cluster contains particle from Dalitz decay & more than one particle of this decay is contained in cluster
91  Bool_t IsPhotonWithElecMother(){return fCaloPhotonMCFlags&kIsPhotonWithElecMother;} // largest contribution to cluster is photon which stems from an electron (i.e. radiation)
92  Bool_t IsShower(){return fCaloPhotonMCFlags&kIsShower;} // largest contribution to cluster seems to stem from a shower
93  Bool_t IsEMNonLeading(){return !(fCaloPhotonMCFlags&kIsPhoton) && !(fCaloPhotonMCFlags&kIsElectron);} // largest contribution is from hadron
94  Bool_t IsSubLeadingEM(){return fCaloPhotonMCFlags&kIsSubLeadingEM;} // cluster contains at least one electron or photon from a pi0 or eta in subleading contribution
95 
96  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)
98  if (!fCaloPhoton && fCaloPhotonMCFlags == 1) return kTRUE;
99  else return kFALSE;
100  }
102 
103  Long_t fCaloPhotonMCLabels[50];
105  Long_t fNeutralPionLabels[20];
120 
121  ClassDef(AliAODConversionPhoton,9)
122 };
123 
124 
125 #endif
126 
127 
128 
virtual Double_t GetPy() const
Int_t GetNeutralPionMCLabel(Int_t i)
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
Float_t GetNeutralPionEnergyFraction(Int_t i)
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)
void SetCaloPhotonMCFlagsAOD(AliVEvent *event, Bool_t enableSort, Bool_t mergedAnalysis=kFALSE, AliVCluster *cluster=NULL)
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 SetCaloPhotonMCFlags(AliMCEvent *mcEvent, Bool_t enableSort, Bool_t mergedAnalysis=kFALSE, AliVCluster *cluster=NULL)
virtual Double_t GetPhotonMass() const