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 */
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
20 class AliDimuCombinator:
25 void Copy(TObject &combi) const;
28 // Access to particle stack
29 TParticle* Particle(Int_t i) const;
31 TParticle* FirstMuon();
32 TParticle* NextMuon();
33 // Single muons selected
34 TParticle* FirstMuonSelected();
35 TParticle* NextMuonSelected();
37 void FirstMuonPair(TParticle* & muon1, TParticle* & muon2);
38 void NextMuonPair(TParticle* & muon1, TParticle* & muon2);
40 void FirstMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
41 void NextMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
42 // Loop over all prticles
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);
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;
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;
59 void SmearGauss(Float_t width, Float_t & value) const;
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;
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);
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
96 ClassDef(AliDimuCombinator,1) // Tools for dimuon combinatoric studies