]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/AliMuonInfoStoreMC.h
Updates on single muon HF analysis (Shuang)
[u/mrichter/AliRoot.git] / PWG / muon / AliMuonInfoStoreMC.h
CommitLineData
fd1d0cb9 1#ifndef ALIMUONINFOSTOREMC_H
2#define ALIMUONINFOSTOREMC_H
3
4/* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
27de2dfb 7/* $Id$ */
8
fd1d0cb9 9//***********************************************************
10// Class AliMuonInfoStoreRD
11// class used to extract and store info of MC particle
12// Author: X-M. Zhang, zhang@clermont.in2p3.fr
13// zhangxm@iopp.ccnu.edu.cn
14//***********************************************************
15
16#include <TString.h>
17#include <TParticle.h>
18#include <TLorentzVector.h>
19#include <TClonesArray.h>
20
21#include "AliMCEventHandler.h"
22#include "AliStack.h"
23#include "AliAODMCParticle.h"
24#include "AliESDEvent.h"
25#include "AliESDMuonTrack.h"
26#include "AliAODTrack.h"
27#include "AliMuonInfoStoreRD.h"
1195bb6f 28#include "AliMCEvent.h"
fd1d0cb9 29
30class AliMuonInfoStoreMC : public AliMuonInfoStoreRD {
31 public:
32
33 AliMuonInfoStoreMC();
9bbc42ca 34 AliMuonInfoStoreMC(AliAODTrack *trkAOD, AliMCEvent *mcEvent, UInt_t selMask, Bool_t full=kFALSE);
35 AliMuonInfoStoreMC(AliESDMuonTrack *trkESD, AliMCEvent *mcEvent, UInt_t selMask, Bool_t full=kFALSE);
fd1d0cb9 36 AliMuonInfoStoreMC(const AliMuonInfoStoreMC &src);
37 AliMuonInfoStoreMC& operator=(const AliMuonInfoStoreMC &src);
38 virtual ~AliMuonInfoStoreMC();
39
1195bb6f 40 Int_t ParentFlavour(Int_t i=0) const;
fd1d0cb9 41 Bool_t IsMotherAResonance(Int_t i) const;
1195bb6f 42
43 TLorentzVector LorentzP() const { return fLorentzP; }
d387f518 44 Int_t Source() const { return fSource; }
45 Int_t TrackIndex() const { return fTrackIndex; }
1195bb6f 46 Int_t TrackPDGCode() const { return fTrackPDGCode; }
47 Int_t ParentsN() const { return fNParents; }
d387f518 48 Int_t ParentIndex(Int_t i=0) const { return (i<fNParents ? fParentIndex[i] : -1); }
1195bb6f 49 Int_t ParentPDGCode(Int_t i=0) const { return (i<fNParents ? fParentPDGCode[i] : 0); }
d387f518 50 Int_t QuarkIndex(Int_t i=0) const { return (i<4 ? fQuarkIndex[i] : -1); }
1195bb6f 51 Int_t QuarkPDGCode(Int_t i=0) const { return (i<4 ? fQuarkPDGCode[i] : 0); }
52 Bool_t IsOscillation() const { return fOscillation; }
d387f518 53 Double_t Weight() const { return fWeight; }
54 Bool_t IsPhyPrimKPi() const { return fIsPhyPrim; }
55 Short_t GetGeneratorIndex() const { return fGeneratorIndex; }
fd1d0cb9 56
57 static const char* StdBranchName() { return fgkStdBranchName.Data(); }
1195bb6f 58 static Int_t SourcesN() { return fgkSourcesN; }
fd1d0cb9 59
60 private:
61
1195bb6f 62 void SetMCInfoAOD(AliMCEvent *mcEvent, Int_t label);
63 void SetMCInfoESD(AliMCEvent *mcEvent, Int_t label);
64 void FillHistoryQuarksAOD(AliMCEvent *mcEvent, Int_t lineM);
65 void FillHistoryQuarksESD(AliMCEvent *mcEvent, Int_t lineM);
fd1d0cb9 66 Int_t SelectHFMuon();
67
68 Bool_t IsDiquark(Int_t pdg);
69 void ResetQuarkInfo();
70
d387f518 71 static const TString fgkStdBranchName; // Standard branch name
72 static const Int_t fgkSourcesN; // num. of muon sources
73
74 Bool_t fIsFull; // whether to use full mode (Pb-Pb)
75 TLorentzVector fLorentzP; // lorentz momentum of particle
76 Int_t fTrackIndex; // index of the MC particle
77 Int_t fTrackPDGCode; // PDG code of the MC particle
78 Int_t fSource; // = 0, mu<-b
79 // = 1, mu<-c
80 // = 2, primary mu
81 // = 3, secondary mu
82 // = 4, not mu
83 // = 5, unidentified track
84
85 Int_t fParentIndex[5]; // index of parents
86 Int_t fParentPDGCode[5]; // PDG code of parents
87 Int_t fNParents; // num. of parents
88 Bool_t fOscillation; // flag of oscillation
89
90 Int_t fQuarkIndex[4]; // index of quarks
91 Int_t fQuarkPDGCode[4]; // PDG code of quarks
92
93 Double_t fWeight; // for PbPb collisoions
94 Bool_t fIsPhyPrim; // select physical primary decay mu
95 Short_t fGeneratorIndex; // index for the employed generator
96
97 ClassDef(AliMuonInfoStoreMC, 6);
fd1d0cb9 98};
99
100#endif