]>
Commit | Line | Data |
---|---|---|
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 | // | |
7d566a7d | 33 | // Iterators |
34 | // Single muons | |
fe4da5cc | 35 | GParticle* FirstMuon(); |
36 | GParticle* NextMuon(); | |
7d566a7d | 37 | // Single muons selected |
fe4da5cc | 38 | GParticle* FirstMuonSelected(); |
39 | GParticle* NextMuonSelected(); | |
7d566a7d | 40 | // Dimuons |
fe4da5cc | 41 | void FirstMuonPair(GParticle* & muon1, GParticle* & muon2); |
42 | void NextMuonPair(GParticle* & muon1, GParticle* & muon2); | |
7d566a7d | 43 | // Dimuons selected |
fe4da5cc | 44 | void FirstMuonPairSelected(GParticle* & muon1, GParticle* & muon2); |
45 | void NextMuonPairSelected(GParticle* & muon1, GParticle* & muon2); | |
7d566a7d | 46 | // Loop over all prticles |
fe4da5cc | 47 | void ResetRange(); |
7d566a7d | 48 | // Set two ranges for dimuon loop |
fe4da5cc | 49 | void SetFirstRange (Int_t from, Int_t to); |
50 | void SetSecondRange(Int_t from, Int_t to); | |
51 | // Cuts | |
7d566a7d | 52 | void SetPtMin(Float_t ptmin) {fPtMin=ptmin;} |
53 | void SetEtaCut(Float_t etamin, Float_t etamax){fEtaMin=etamin; fEtaMax=etamax;} Bool_t Selected(GParticle* part); | |
54 | Bool_t Selected(GParticle* part1, GParticle* part2); | |
fe4da5cc | 55 | // Kinematics |
56 | Float_t Mass(GParticle* part1, GParticle* part); | |
57 | Float_t PT(GParticle* part1, GParticle* part); | |
58 | Float_t Pz(GParticle* part1, GParticle* part); | |
59 | Float_t Y(GParticle* part1, GParticle* part); | |
60 | // Response | |
61 | void SmearGauss(Float_t width, Float_t & value); | |
fe4da5cc | 62 | // Weight |
7d566a7d | 63 | Bool_t Correlated(GParticle* part1, GParticle* part2); |
fe4da5cc | 64 | void SetRate(Float_t rate){fRate1=rate;} |
65 | void SetRate(Float_t rate1, Float_t rate2 ){fRate1=rate1; fRate2=rate2;} | |
66 | Float_t Weight(GParticle* part); | |
67 | Float_t Weight(GParticle* part1, GParticle* part); | |
7d566a7d | 68 | Float_t Decay_Prob(GParticle* part); |
69 | ||
fe4da5cc | 70 | private: |
71 | void FirstPartner(); | |
72 | void NextPartner(); | |
73 | void FirstPartnerSelected(); | |
74 | void NextPartnerSelected(); | |
7d566a7d | 75 | Int_t Origin(GParticle* part); |
76 | GParticle* Parent(GParticle* part); | |
fe4da5cc | 77 | GParticle* Partner(); |
78 | Int_t Type(GParticle *part){return part->GetKF();} | |
79 | private: | |
80 | TClonesArray *fPartArray; | |
81 | Int_t fNParticle; | |
82 | Int_t fimuon1; | |
83 | Int_t fimuon2; | |
84 | Int_t fimin1; | |
85 | Int_t fimin2; | |
86 | Int_t fimax1; | |
87 | Int_t fimax2; | |
88 | Float_t fRate1; | |
89 | Float_t fRate2; | |
90 | GParticle *fmuon1; | |
91 | GParticle *fmuon2; | |
92 | Float_t fPtMin; | |
93 | Float_t fEtaMin; | |
94 | Float_t fEtaMax; | |
95 | ClassDef(DimuonCombinator,1) | |
96 | }; | |
97 | #endif | |
98 | ||
99 | ||
100 | ||
101 |