]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEmcQA.h
- Three classes by MinJung Kweon AliHFEpriVtx, AliHFEsecVtx and AliHFEmcQA for
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEmcQA.h
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  **************************************************************************/
15
16 /**************************************************************************
17  *                                                                        *
18  * QA class of Heavy Flavor quark and fragmeted/decayed particles         *
19  *                                                                        *
20  **************************************************************************/
21
22 #ifndef _ALIHFEMCQA_H_
23 #define _ALIHFEMCQA_H_
24
25 #ifndef ROOT_TObject
26 #include <TObject.h>
27 #endif
28
29 class TH1F;
30 class TH2F;
31 class TParticle;
32 class TString;
33 class AliStack;
34
35 //________________________________________________________________
36 class AliHFEmcQA: public TObject {
37
38         public: 
39                 enum heavyType {fkCharm=4, fkBeauty=5};
40                 enum qType {fkQuark, fkantiQuark, fkElectron, fkElectron2nd, fkeHadron, fkDeHadron};
41                 AliHFEmcQA();
42                 AliHFEmcQA(const AliHFEmcQA &p); // copy constructor
43                 AliHFEmcQA &operator=(const AliHFEmcQA &); // assignment operator
44
45                 virtual ~AliHFEmcQA();
46
47                 void PostAnalyze();
48                 void SetVerbosity(Bool_t verb=kTRUE) {fVerbos=verb;}
49
50         protected:
51                 void SetStack(AliStack* stack){fStack=stack;} // set stack pointer
52                 void CreateHistograms(const Int_t kquark, TString hnopt=""); // create histograms for mc qa analysis
53                 void Init();
54                 void GetQuarkKine(Int_t iTrack, const Int_t kquark); // get heavy quark kinematics distribution
55                 void GetDecayedKine(Int_t iTrack, const Int_t kquark, const Int_t kdecayed, Bool_t isbarrel=kFALSE); // get decay electron kinematics distribution
56                 void EndOfEventAna(const Int_t kquark); // run analysis which should be done at the end of the event loop
57                 void IdentifyMother(Int_t mother_label, Int_t &mother_pdg, Int_t &grandmother_label); // 
58                 void HardScattering(const Int_t kquark, Int_t &motherID, Int_t &mothertype, Int_t &motherlabel); // check if the quark is produced from hard scattering
59                 void reportStrangeness(Int_t &motherID, Int_t &mothertype, Int_t &motherlabel); // report if the quark production process is unknown
60                 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 
61                 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
62                 Float_t GetRapidity(TParticle *part); // return rapidity
63
64                 Bool_t fVerbos; //
65
66                 AliStack* fStack; //            
67
68                 static const Int_t fgkGluon; //
69                 static const Int_t fgkPDGInterested; //
70                 static const Int_t fgkMaxGener; //
71                 static const Int_t fgkMaxIter; //
72                 static const Int_t fgkqType; //
73
74
75                 enum ProcessType_t
76                         {
77                         fkPairCreationFromq,  fkPairCreationFromg,  fkFlavourExitation,  fkGluonSplitting, fkInitialPartonShower, fkLightQuarkShower
78                         };
79
80                 TString fkqTypeLabel[6]; //
81
82                 struct hists{
83                         TH1F *fPdgCode; // histogram to store particle pdg code
84                         TH1F *fPt; // histogram to store pt
85                         TH1F *fY; // histogram to store rapidity
86                         TH1F *fEta; // histogram to store eta
87                 };
88                 struct histsComm {
89                         TH1F *fNq; // histogram to store number of quark
90                         TH1F *fProcessID; // histogram to store process id 
91                         TH2F *fePtRatio; //
92                         TH2F *fDePtRatio; //
93                         TH2F *feDistance; //
94                         TH2F *fDeDistance; //
95                 };
96
97                 hists fHist[2][6]; //
98                 histsComm fHistComm[2]; //
99
100                 TParticle *fHeavyQuark[50]; //
101                 Int_t fIsHeavy[2]; //
102                 Int_t fNparents; //
103                 Int_t fParentSelect[2][7]; //
104
105
106                 ClassDef(AliHFEmcQA,0); // HFE Monte Carlo quality assurance
107 };
108
109 #endif