]>
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 | // | |
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 |