Converting PWG/TRD to native cmake
[u/mrichter/AliRoot.git] / EVGEN / AliDimuCombinator.h
CommitLineData
f87cfe57 1#ifndef ALIDIMUCOMBINATOR_H
2#define ALIDIMUCOMBINATOR_H
3da30618 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
675e9664 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
f87cfe57 14#include <TObject.h>
3da30618 15
f87cfe57 16class TClonesArray;
17class TParticle;
fe4da5cc 18
19
dafbc1c5 20class AliDimuCombinator:
fe4da5cc 21 public TObject
22{
23public:
3b467544 24 AliDimuCombinator();
dc1d768c 25 void Copy(TObject &combi) const;
fe4da5cc 26//
7d566a7d 27// Iterators
3b467544 28// Access to particle stack
8caed1f4 29 TParticle* Particle(Int_t i) const;
7d566a7d 30// Single muons
1578254f 31 TParticle* FirstMuon();
32 TParticle* NextMuon();
7d566a7d 33// Single muons selected
1578254f 34 TParticle* FirstMuonSelected();
35 TParticle* NextMuonSelected();
7d566a7d 36// Dimuons
1578254f 37 void FirstMuonPair(TParticle* & muon1, TParticle* & muon2);
38 void NextMuonPair(TParticle* & muon1, TParticle* & muon2);
7d566a7d 39// Dimuons selected
1578254f 40 void FirstMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
41 void NextMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
7d566a7d 42// Loop over all prticles
fe4da5cc 43 void ResetRange();
7d566a7d 44// Set two ranges for dimuon loop
fe4da5cc 45 void SetFirstRange (Int_t from, Int_t to);
46 void SetSecondRange(Int_t from, Int_t to);
47// Cuts
7d566a7d 48 void SetPtMin(Float_t ptmin) {fPtMin=ptmin;}
f87cfe57 49 void SetEtaCut(Float_t etamin, Float_t etamax)
50 {fEtaMin=etamin; fEtaMax=etamax;}
4a33c50d 51 Bool_t Selected(const TParticle* part) const;
52 Bool_t Selected(const TParticle* part1, const TParticle* part2) const;
fe4da5cc 53// Kinematics
4a33c50d 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;
fe4da5cc 58// Response
8caed1f4 59 void SmearGauss(Float_t width, Float_t & value) const;
fe4da5cc 60// Weight
4a33c50d 61 Bool_t Correlated(const TParticle* part1, const TParticle* part2) const;
d430df3f 62 void SetRate(Float_t rate) {fRate1=rate;}
63 void SetRate(Float_t rate1, Float_t rate2 ) {fRate1=rate1; fRate2=rate2;}
4a33c50d 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;
7d566a7d 67
fe4da5cc 68 private:
69 void FirstPartner();
70 void NextPartner();
71 void FirstPartnerSelected();
72 void NextPartnerSelected();
4a33c50d 73 Int_t Origin(const TParticle* part) const;
74 TParticle* Parent(const TParticle* part) const;
8caed1f4 75 TParticle* Partner() const;
4a33c50d 76 Int_t Type(const TParticle *part) const;
675e9664 77 AliDimuCombinator(const AliDimuCombinator &combinator);
78 AliDimuCombinator & operator=(const AliDimuCombinator & rhs);
79
d430df3f 80 private:
f87cfe57 81 Int_t fNParticle; // Number of particles
d430df3f 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
f87cfe57 88 Float_t fRate1; // weight factor
89 Float_t fRate2; // weight factor
d430df3f 90 TParticle *fMuon1; // First muon
91 TParticle *fMuon2; // Second muon
f87cfe57 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
fe4da5cc 97};
98#endif
99
100
101
102
f87cfe57 103
d430df3f 104
105
106