Line data Source code
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 0 : 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 0 : void SetPtMin(Float_t ptmin) {fPtMin=ptmin;}
49 : void SetEtaCut(Float_t etamin, Float_t etamax)
50 0 : {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 0 : void SetRate(Float_t rate) {fRate1=rate;}
63 0 : 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 6 : ClassDef(AliDimuCombinator,1) // Tools for dimuon combinatoric studies
97 : };
98 : #endif
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
|