1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 /**************************************************************************
18 * QA class of Heavy Flavor quark and fragmeted/decayed particles *
20 **************************************************************************/
22 #ifndef _ALIHFEMCQA_H_
23 #define _ALIHFEMCQA_H_
35 //________________________________________________________________
36 class AliHFEmcQA: public TObject {
39 enum heavyType {fkCharm=4, fkBeauty=5};
40 enum qType {fkQuark, fkantiQuark, fkElectron, fkElectron2nd, fkeHadron, fkDeHadron};
42 AliHFEmcQA(const AliHFEmcQA &p); // copy constructor
43 AliHFEmcQA &operator=(const AliHFEmcQA &); // assignment operator
45 virtual ~AliHFEmcQA();
48 void SetVerbosity(Bool_t verb=kTRUE) {fVerbos=verb;}
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
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
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; //
77 fkPairCreationFromq, fkPairCreationFromg, fkFlavourExitation, fkGluonSplitting, fkInitialPartonShower, fkLightQuarkShower
80 TString fkqTypeLabel[6]; //
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
89 TH1F *fNq; // histogram to store number of quark
90 TH1F *fProcessID; // histogram to store process id
98 histsComm fHistComm[2]; //
100 TParticle *fHeavyQuark[50]; //
101 Int_t fIsHeavy[2]; //
103 Int_t fParentSelect[2][7]; //
106 ClassDef(AliHFEmcQA,0); // HFE Monte Carlo quality assurance