]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliDimuCombinator.h
Add bkg subtraction (optional); change to LCH11h as default input set
[u/mrichter/AliRoot.git] / EVGEN / AliDimuCombinator.h
1 #ifndef ALIDIMUCOMBINATOR_H
2 #define ALIDIMUCOMBINATOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8
9 //  Class for dimuon analysis and fast dimuon simulation.
10 //  It uses the AliRun particle tree.
11 //  Comments and suggestions to andreas.morsch@cern.ch
12
13
14 #include <TObject.h>
15
16 class TClonesArray;
17 class TParticle;
18
19
20 class AliDimuCombinator:
21     public TObject 
22 {
23 public:
24     AliDimuCombinator();
25     void  Copy(TObject &combi) const;
26 //    
27 //  Iterators
28 //  Access to particle stack
29     TParticle* Particle(Int_t i) const;
30 //  Single muons
31     TParticle* FirstMuon();
32     TParticle* NextMuon();
33 //  Single muons selected
34     TParticle* FirstMuonSelected();
35     TParticle* NextMuonSelected();
36 //  Dimuons    
37     void FirstMuonPair(TParticle* & muon1, TParticle* & muon2);
38     void NextMuonPair(TParticle* & muon1, TParticle* & muon2);
39 //  Dimuons selected    
40     void FirstMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
41     void NextMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
42 //  Loop over all prticles    
43     void ResetRange();
44 //  Set two ranges for dimuon loop    
45     void SetFirstRange (Int_t from, Int_t to);
46     void SetSecondRange(Int_t from, Int_t to);    
47 //  Cuts
48     void SetPtMin(Float_t ptmin) {fPtMin=ptmin;}
49     void SetEtaCut(Float_t etamin, Float_t etamax)
50         {fEtaMin=etamin; fEtaMax=etamax;}
51     Bool_t Selected(const TParticle* part) const;
52     Bool_t Selected(const TParticle* part1, const TParticle* part2) const;
53 // Kinematics
54     Float_t Mass(const TParticle* part1, const TParticle* part) const;
55     Float_t PT(const TParticle* part1, const TParticle* part) const;
56     Float_t Pz(const TParticle* part1, const TParticle* part) const;
57     Float_t Y(const TParticle* part1, const TParticle* part) const;
58 // Response
59     void SmearGauss(Float_t width, Float_t & value) const;
60 // Weight
61     Bool_t  Correlated(const TParticle* part1, const TParticle* part2) const;
62     void    SetRate(Float_t rate) {fRate1=rate;}
63     void    SetRate(Float_t rate1, Float_t rate2 ) {fRate1=rate1; fRate2=rate2;}
64     Float_t Weight(const TParticle* part) const;
65     Float_t Weight(const TParticle* part1, const TParticle* part) const;
66     Float_t DecayProbability(const TParticle* part) const;
67     
68  private:
69     void FirstPartner();
70     void NextPartner();
71     void FirstPartnerSelected();
72     void NextPartnerSelected();
73     Int_t Origin(const TParticle* part) const;
74     TParticle* Parent(const TParticle* part) const;
75     TParticle* Partner() const;
76     Int_t Type(const TParticle *part) const;
77     AliDimuCombinator(const AliDimuCombinator &combinator);
78     AliDimuCombinator & operator=(const AliDimuCombinator & rhs);
79
80  private:
81     Int_t fNParticle;              // Number of particles
82     Int_t fImuon1;                 // Index of first muon
83     Int_t fImuon2;                 // Index of second muon
84     Int_t fImin1;                  // Lowest index for first   muon  
85     Int_t fImin2;                  // Lowest index for second  muon 
86     Int_t fImax1;                  // Highest index for first  muon  
87     Int_t fImax2;                  // Highest index for second muon 
88     Float_t fRate1;                // weight factor  
89     Float_t fRate2;                // weight factor
90     TParticle *fMuon1;             // First muon
91     TParticle *fMuon2;             // Second muon
92     Float_t fPtMin;                // pT-cut 
93     Float_t fEtaMin;               // Minimum pseudorapidity cut
94     Float_t fEtaMax;               // Maximum pseudorapidity cut
95     
96     ClassDef(AliDimuCombinator,1)  // Tools for dimuon combinatoric studies
97 };
98 #endif
99
100
101
102
103
104
105
106