]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/DimuonCombinator.h
Do not save CVS subdirectories
[u/mrichter/AliRoot.git] / EVGEN / DimuonCombinator.h
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