fe4da5cc |
1 | #ifndef _DimuonCombinator_H |
2 | #define _DimuonCombinator_H |
3 | #include "GParticle.h" |
4 | #include <TBrowser.h> |
5 | #include <TList.h> |
6 | #include <TTree.h> |
7 | #include <TROOT.h> |
8 | |
9 | |
10 | class DimuonCombinator: |
11 | public TObject |
12 | { |
13 | public: |
14 | DimuonCombinator(TClonesArray* Partarray){ |
15 | fPartArray=Partarray; |
16 | fNParticle=fPartArray->GetEntriesFast(); |
17 | |
18 | fimuon1 =0; |
19 | fimuon2 =0; |
20 | fmuon1 =0; |
21 | fmuon2 =0; |
22 | fimin1 = 0; |
23 | fimin2 = 0; |
24 | fimax1 = fNParticle; |
25 | fimax2 = fNParticle; |
26 | fPtMin =0; |
27 | fEtaMin =-10; |
28 | fEtaMax =-10; |
29 | fRate1=1.; |
30 | fRate2=1.; |
31 | } |
32 | // |
33 | // Iterators |
34 | GParticle* FirstMuon(); |
35 | GParticle* NextMuon(); |
36 | GParticle* FirstMuonSelected(); |
37 | GParticle* NextMuonSelected(); |
38 | |
39 | void FirstMuonPair(GParticle* & muon1, GParticle* & muon2); |
40 | void NextMuonPair(GParticle* & muon1, GParticle* & muon2); |
41 | void FirstMuonPairSelected(GParticle* & muon1, GParticle* & muon2); |
42 | void NextMuonPairSelected(GParticle* & muon1, GParticle* & muon2); |
43 | void ResetRange(); |
44 | void SetFirstRange (Int_t from, Int_t to); |
45 | void SetSecondRange(Int_t from, Int_t to); |
46 | // Cuts |
47 | void SetPtMin(Float_t ptmin){fPtMin=ptmin;} |
48 | void SetEtaCut(Float_t etamin, Float_t etamax){fEtaMin=etamin; fEtaMax=etamax;} |
49 | Int_t Selected(GParticle* part); |
50 | Int_t Selected(GParticle* part1, GParticle* part2); |
51 | // Kinematics |
52 | Float_t Mass(GParticle* part1, GParticle* part); |
53 | Float_t PT(GParticle* part1, GParticle* part); |
54 | Float_t Pz(GParticle* part1, GParticle* part); |
55 | Float_t Y(GParticle* part1, GParticle* part); |
56 | // Response |
57 | void SmearGauss(Float_t width, Float_t & value); |
58 | |
59 | // Weight |
60 | void SetRate(Float_t rate){fRate1=rate;} |
61 | void SetRate(Float_t rate1, Float_t rate2 ){fRate1=rate1; fRate2=rate2;} |
62 | Float_t Weight(GParticle* part); |
63 | Float_t Weight(GParticle* part1, GParticle* part); |
64 | |
65 | private: |
66 | void FirstPartner(); |
67 | void NextPartner(); |
68 | void FirstPartnerSelected(); |
69 | void NextPartnerSelected(); |
70 | |
71 | GParticle* Partner(); |
72 | Int_t Type(GParticle *part){return part->GetKF();} |
73 | private: |
74 | TClonesArray *fPartArray; |
75 | Int_t fNParticle; |
76 | Int_t fimuon1; |
77 | Int_t fimuon2; |
78 | Int_t fimin1; |
79 | Int_t fimin2; |
80 | Int_t fimax1; |
81 | Int_t fimax2; |
82 | Float_t fRate1; |
83 | Float_t fRate2; |
84 | GParticle *fmuon1; |
85 | GParticle *fmuon2; |
86 | Float_t fPtMin; |
87 | Float_t fEtaMin; |
88 | Float_t fEtaMax; |
89 | ClassDef(DimuonCombinator,1) |
90 | }; |
91 | #endif |
92 | |
93 | |
94 | |
95 | |