Keep e+e- from pair production of primary gammas.
[u/mrichter/AliRoot.git] / PWG3 / muon / AliMCMuonTrack.h
CommitLineData
4292b3b6 1#ifndef ALIMCMUONTRACK_H
2#define ALIMCMUONTRACK_H
3
4#include <TParticle.h>
5#include <TLorentzVector.h>
6#include <TClonesArray.h>
7
8#include "AliMCEventHandler.h"
9#include "AliStack.h"
10#include "AliAODMCParticle.h"
11#include "AliESDEvent.h"
12#include "AliESDMuonTrack.h"
13#include "AliAODTrack.h"
14#include "AliAODMuonTrack.h"
15
16class AliMCMuonTrack : public AliAODMuonTrack {
17 public:
18
19 AliMCMuonTrack();
20 AliMCMuonTrack(AliAODTrack *trkAOD, TClonesArray *mcClArr, Bool_t full=kFALSE);
21 AliMCMuonTrack(AliESDMuonTrack *trkESD, AliESDEvent *esd, AliMCEventHandler *mcH, Bool_t full=kFALSE);
22 AliMCMuonTrack(AliESDMuonTrack *trkESD, AliStack *stack);
23 virtual ~AliMCMuonTrack();
24
25 Int_t GetParentFlavour(Int_t i=0) const;
26 Bool_t IsMotherAResonance(Int_t i) const;
27 Bool_t IsAMuon() const { return (fSource>=0 && fSource!=4); }
28
29 TLorentzVector GetPGen() const { return fPGen; }
30 Int_t GetSource() const { return fSource; }
31 Int_t GetTrackIndex() const { return fTrackIndex; }
32 Int_t GetTrackPDGCode() const { return fTrackPDGCode; }
33 Int_t GetNParents() const { return fNParents; }
34 Int_t GetParentIndex(Int_t i=0) const { return (i<fNParents ? fParentIndex[i] : -1); }
35 Int_t GetParentPDGCode(Int_t i=0) const { return (i<fNParents ? fParentPDGCode[i] : 0); }
36 Int_t GetQuarkIndex(Int_t i=0) const { return (i<4 ? fQuarkIndex[i] : -1); }
37 Int_t GetQuarkPDGCode(Int_t i=0) const { return (i<4 ? fQuarkPDGCode[i] : 0); }
38 Bool_t IsOscillation() const { return fOscillation; }
39 Double_t GetWeight() const { return fWeight; }
40
41 private:
42
43 AliAODMCParticle* FindTrackRef(AliAODTrack *trkAOD, TClonesArray *mcClArr);
44 TParticle* FindTrackRef(AliESDMuonTrack *trkESD, AliESDEvent *esd, AliMCEventHandler *mcH); // do not implement on official train
45 void SetMCInfo(AliAODMCParticle *pMC, TClonesArray *mcClArr);
46 void SetMCInfo(TParticle *pMC, AliMCEventHandler *mcH);
47 void FillHistoryParents(Int_t lineM, TClonesArray *mcClArr);
48 void FillHistoryParents(Int_t lineM, AliStack *stack);
49 void FillHistoryQuarks(Int_t lineM, TClonesArray *mcClArr);
50 void FillHistoryQuarks(Int_t lineM, AliStack *stack);
51 //AliMUONTrack* CovESDtoMuonTrack(AliESDMuonTrack &trkESD); // do not implement on official train
52 Int_t SelectHFMuon();
53
54 Bool_t IsDiquark(Int_t pdg);
55 void ResetQuarkInfo();
56
57 static const Double_t fgkSigmaCut;
58
59 Bool_t fIsFull;
60 static const Int_t fgkNParentsMax = 5;
61 TLorentzVector fPGen;
62 Int_t fTrackIndex;
63 Int_t fTrackPDGCode;
64 Int_t fSource; // = 0, mu<-b
65 // = 1, mu<-c
66 // = 2, primary mu
67 // = 3, secondary mu
68 // = 4, not mu
69
70 Int_t fParentIndex[fgkNParentsMax];
71 Int_t fParentPDGCode[fgkNParentsMax];
72 Int_t fNParents;
73 Bool_t fOscillation;
74
75 Int_t fQuarkIndex[4];
76 Int_t fQuarkPDGCode[4];
77
78 Double_t fWeight; // for PbPb collisoions
79
80 ClassDef(AliMCMuonTrack, 2);
81};
82
83#endif