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