2f1637fb |
1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
3 | * See cxx source for full Copyright notice * |
4 | **************************************************************************/ |
5 | |
6 | //------------------------------------------------------------------------- |
7 | // Class AliRsnAnalysis |
8 | // Reconstruction and analysis of K* Rsn |
9 | // |
10 | // author: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it) |
11 | //------------------------------------------------------------------------- |
12 | |
13 | #ifndef AliRsnANALYSIS_H |
14 | #define AliRsnANALYSIS_H |
15 | |
16 | #include <TNamed.h> |
17 | |
18 | #include "AliPID.h" |
19 | |
20 | class TH1D; |
21 | class TObjArray; |
22 | class AliRsnEvent; |
23 | class AliRsnDaughter; |
24 | class AliRsnDaughterCut; |
25 | |
26 | class AliRsnAnalysis : public TObject |
27 | { |
28 | public: |
29 | |
30 | AliRsnAnalysis(); |
31 | virtual ~AliRsnAnalysis() {Clear();} |
32 | |
33 | void AddCutPair(AliRsnDaughterCut *cut); |
34 | void AddCutSingle(AliPID::EParticleType type, AliRsnDaughterCut *cut); |
35 | void AddMixPairDef(AliPID::EParticleType p1, Char_t s1, AliPID::EParticleType p2, Char_t s2); |
36 | void AddPairDef(AliPID::EParticleType p1, Char_t s1, AliPID::EParticleType p2, Char_t s2, Bool_t onlyTrue = kFALSE); |
37 | void Clear(Option_t *option = ""); |
38 | Stat_t EventMix(Int_t nmix = 5, Int_t multDiffMax = 10, Double_t vzDiffMax = 0.01, Bool_t compareTotalMult = kFALSE); |
39 | Stat_t Process(); |
40 | void SetBins(Int_t nbins, Double_t min, Double_t max) {fNBins=nbins;fHistoMin=min;fHistoMax=max;} |
41 | void SetEventsTree(TTree *tree) {fEventsTree = tree;} |
42 | void SetRejectFakes(Bool_t doit=kTRUE) {fRejectFakes = doit;} |
43 | void SetTrueMotherPDG(Int_t pdg) {fTrueMotherPDG = pdg;} |
44 | void WriteHistograms(); |
45 | |
46 | private: |
47 | |
48 | class AliPairDef : public TNamed |
49 | { |
50 | public: |
51 | |
52 | AliPairDef(AliPID::EParticleType p1, Char_t s1, AliPID::EParticleType p2, Char_t s2, Int_t pdg, Bool_t onlyTrue = kFALSE); |
53 | |
54 | virtual ~AliPairDef() { } |
55 | |
56 | Char_t GetSign1() {return fSign1;} |
57 | Char_t GetSign2() {return fSign2;} |
58 | Bool_t GetOnlyTrue() {return fOnlyTrue;} |
59 | AliPID::EParticleType GetParticle1() {return fParticle1;} |
60 | AliPID::EParticleType GetParticle2() {return fParticle2;} |
61 | Double_t GetMass1() {return fMass1;} |
62 | Double_t GetMass2() {return fMass2;} |
63 | |
64 | void SetSign1(Char_t value) {fSign1 = value;} |
65 | void SetSign2(Char_t value) {fSign2 = value;} |
66 | void SetOnlyTrue(Bool_t value = kTRUE) {fOnlyTrue = value;} |
67 | void SetTrueMotherPDG(Int_t pdg) {fTrueMotherPDG = pdg;} |
68 | void SetParticle1(AliPID::EParticleType p) {fParticle1 = p;} |
69 | void SetParticle2(AliPID::EParticleType p) {fParticle2 = p;} |
70 | |
71 | Text_t* ParticleName(AliPID::EParticleType part); |
72 | |
73 | private: |
74 | |
75 | Bool_t fOnlyTrue; // flag to be used for spectra of true pairs |
76 | Int_t fTrueMotherPDG; // PDG code of true mother (if requested) |
77 | |
78 | Double_t fMass1; // |
79 | Char_t fSign1; // info about particle 1 |
80 | AliPID::EParticleType fParticle1; // |
81 | |
82 | Double_t fMass2; // |
83 | Char_t fSign2; // info about particle 2 |
84 | AliPID::EParticleType fParticle2; // |
85 | }; |
86 | |
87 | Stat_t Compute(AliPairDef *pd, TH1D* &h, AliRsnEvent *ev1, AliRsnEvent *ev2); |
88 | Bool_t SingleCutCheck(Int_t itype, AliRsnDaughter *track); |
89 | Bool_t PairCutCheck(AliRsnDaughter *track1, AliRsnDaughter *track2); |
90 | |
91 | Bool_t fRejectFakes; // reject particles labeled as fake |
92 | |
93 | Int_t fNBins; // number of histogram bins |
94 | Double_t fHistoMin; // minimum of the histograms |
95 | Double_t fHistoMax; // maximum of the histograms |
96 | |
97 | Int_t fTrueMotherPDG; // PDG code of true mother (used to create 'true' histos) |
98 | |
99 | TObjArray *fMixPairDefs; // list of pair definitions for histograms (event mixing) |
100 | TObjArray *fMixHistograms; //! list of invmass histograms created (event mixing) |
101 | |
102 | TObjArray *fPairDefs; // list of pair definitions for histograms |
103 | TObjArray *fHistograms; //! list of invmass histograms created |
104 | |
105 | TObjArray *fCuts[AliPID::kSPECIES]; //! list of single particle cuts for each particle type |
106 | TObjArray *fPairCuts; //! list of pair cuts |
107 | TTree *fEventsTree; //! TTree of events (can not be created here, must be passed) |
108 | |
109 | // Rsn analysis implementation |
110 | ClassDef(AliRsnAnalysis,1) |
111 | }; |
112 | |
113 | #endif |