]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/hfe/AliHFEmcQA.h
add selection of jet finders in delta AOD via steering macro, add temporary task...
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEmcQA.h
CommitLineData
259c3296 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
50685501 15//
16// QA class of Heavy Flavor quark and fragmeted/decayed particles
17// -Check kinematics of Heavy Quarks/hadrons, and decayed leptons
18// pT, rapidity
19// decay lepton kinematics w/wo acceptance
20// heavy hadron decay length, electron pT fraction carried from decay
21// -Check yield of Heavy Quarks/hadrons
22// Number of produced heavy quark
23// Number of produced hadron of given pdg code
24//
259c3296 25
dbe3abbe 26#ifndef ALIHFEMCQA_H
27#define ALIHFEMCQA_H
259c3296 28
29#ifndef ROOT_TObject
75d81601 30//#include <TObject.h>
259c3296 31#endif
32
33class TH1F;
34class TH2F;
35class TParticle;
36class TString;
37class AliStack;
0792aa82 38class AliAODMCParticle;
259c3296 39
40//________________________________________________________________
41class AliHFEmcQA: public TObject {
42
43 public:
dbe3abbe 44 enum heavyType {kCharm=4, kBeauty=5, kElectronPDG=11};
45 enum qType {kQuark, kantiQuark, kHadron, keHadron, kDeHadron, kElectron, kElectron2nd};
0792aa82 46 enum SourceType {kDirectCharm=1, kDirectBeauty=2, kBeautyCharm=3, kGamma=4, kPi0=5, kElse=6};
47 enum ProcessType
48 {
49 kPairCreationFromq, kPairCreationFromg, kFlavourExitation, kGluonSplitting, kInitialPartonShower, kLightQuarkShower
50 };
51
259c3296 52 AliHFEmcQA();
53 AliHFEmcQA(const AliHFEmcQA &p); // copy constructor
54 AliHFEmcQA &operator=(const AliHFEmcQA &); // assignment operator
55
56 virtual ~AliHFEmcQA();
57
50685501 58 void PostAnalyze() const;
dbe3abbe 59 void CreateHistograms(const Int_t kquark, Int_t icut, TString hnopt=""); // create histograms for mc qa analysis
60 void SetStack(AliStack* const stack){fStack=stack;} // set stack pointer
0792aa82 61 void SetMCArray(TClonesArray* const mcarry){fMCArray=mcarry;} // set mcarray pointer
259c3296 62 void Init();
dbe3abbe 63
722347d8 64 void GetQuarkKine(TParticle *part, Int_t iTrack, const Int_t kquark); // get heavy quark kinematics distribution
65 void GetHadronKine(TParticle *part, const Int_t kquark); // get heavy hadron kinematics distribution
66 void GetDecayedKine(TParticle *part, const Int_t kquark, const Int_t kdecayed, Int_t icut); // get decay electron kinematics distribution
0792aa82 67 void GetDecayedKine(AliAODMCParticle *mcpart, const Int_t kquark, Int_t kdecayed, Int_t icut); // get decay electron kinematics for AOD
259c3296 68 void EndOfEventAna(const Int_t kquark); // run analysis which should be done at the end of the event loop
0792aa82 69 Int_t GetElectronSource(TParticle* mcpart); // return electron source id
70 Int_t GetElectronSource(AliAODMCParticle *mcpart); // return electron source id for AOD
dbe3abbe 71
72 protected:
75d81601 73 void IdentifyMother(Int_t motherlabel, Int_t &motherpdg, Int_t &grandmotherlabel); //
259c3296 74 void HardScattering(const Int_t kquark, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel); // check if the quark is produced from hard scattering
dbe3abbe 75 void ReportStrangeness(Int_t &motherID, Int_t &mothertype, Int_t &motherlabel); // report if the quark production process is unknown
259c3296 76 Bool_t IsFromInitialShower(Int_t inputmotherlabel, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel); // check if the quark is produced from initial parton shower
77 Bool_t IsFromFinalParton(Int_t inputmotherlabel, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel); // check if the quark is produced from final parton shower
50685501 78 Float_t GetRapidity(TParticle *part) const; // return rapidity
79 Float_t GetRapidity(AliAODMCParticle *part) const; // return rapidity
259c3296 80
dbe3abbe 81 AliStack* fStack; // stack pointer
0792aa82 82 TClonesArray *fMCArray; // mc array pointer
259c3296 83
dbe3abbe 84 static const Int_t fgkGluon; // gluon pdg code
85 static const Int_t fgkMaxGener; // ancester level wanted to be checked
86 static const Int_t fgkMaxIter; // number of iteration to find out matching particle
87 static const Int_t fgkqType; // number of particle type to be checked
259c3296 88
75d81601 89 struct AliHists{
259c3296 90 TH1F *fPdgCode; // histogram to store particle pdg code
91 TH1F *fPt; // histogram to store pt
92 TH1F *fY; // histogram to store rapidity
93 TH1F *fEta; // histogram to store eta
75d81601 94
95 AliHists()
96 : fPdgCode()
97 , fPt()
98 , fY()
99 , fEta()
100 {
101 // default constructor
102 };
103 AliHists(const AliHists & p)
104 : fPdgCode(p.fPdgCode)
105 , fPt(p.fPt)
106 , fY(p.fY)
107 , fEta(p.fEta)
108 {
109 // copy constructor
110 };
111 AliHists &operator=(const AliHists &)
112 {
113 // assignment operator, not yet implemented
114 return *this;
115 }
259c3296 116 };
75d81601 117 struct AliHistsComm {
259c3296 118 TH1F *fNq; // histogram to store number of quark
119 TH1F *fProcessID; // histogram to store process id
dbe3abbe 120 TH2F *fePtRatio; // fraction of electron pT from D or B hadron
121 TH2F *fDePtRatio; // fraction of D electron pT from B hadron
122 TH2F *feDistance; // distance between electron production point to mother particle
123 TH2F *fDeDistance; // distance between D electron production point to mother particle
75d81601 124
125 AliHistsComm()
126 : fNq()
127 , fProcessID()
128 , fePtRatio()
129 , fDePtRatio()
130 , feDistance()
131 , fDeDistance()
132 {
133 // default constructor
134 };
135 AliHistsComm(const AliHistsComm & p)
136 : fNq(p.fNq)
137 , fProcessID(p.fProcessID)
138 , fePtRatio(p.fePtRatio)
139 , fDePtRatio(p.fDePtRatio)
140 , feDistance(p.feDistance)
141 , fDeDistance(p.fDeDistance)
142 {
143 // copy constructor
144 };
145 AliHistsComm &operator=(const AliHistsComm &)
146 {
147 // assignment operator, not yet implemented
148 return *this;
149 }
259c3296 150 };
151
75d81601 152 AliHists fHist[2][7][5]; // struct of histograms to store kinematics of given particles
153 AliHistsComm fHistComm[2][5]; // struct of additional histograms of given particles
259c3296 154
dbe3abbe 155 TParticle *fHeavyQuark[50]; // store pointer of heavy flavour quark
156 Int_t fIsHeavy[2]; // count of heavy flavour
157 Int_t fNparents; // number of heavy hadrons to be considered
158 Int_t fParentSelect[2][7]; // heavy hadron species
259c3296 159
160
722347d8 161 ClassDef(AliHFEmcQA,1);
259c3296 162};
163
164#endif