AliGenHerwig added
[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();
675e9664 25 void Copy(AliDimuCombinator &combi) const;
fe4da5cc 26//
7d566a7d 27// Iterators
3b467544 28// Access to particle stack
29 TParticle* Particle(Int_t i);
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;}
51 Bool_t Selected(TParticle* part);
1578254f 52 Bool_t Selected(TParticle* part1, TParticle* part2);
fe4da5cc 53// Kinematics
1578254f 54 Float_t Mass(TParticle* part1, TParticle* part);
55 Float_t PT(TParticle* part1, TParticle* part);
56 Float_t Pz(TParticle* part1, TParticle* part);
57 Float_t Y(TParticle* part1, TParticle* part);
fe4da5cc 58// Response
59 void SmearGauss(Float_t width, Float_t & value);
fe4da5cc 60// Weight
1578254f 61 Bool_t Correlated(TParticle* part1, TParticle* part2);
d430df3f 62 void SetRate(Float_t rate) {fRate1=rate;}
63 void SetRate(Float_t rate1, Float_t rate2 ) {fRate1=rate1; fRate2=rate2;}
1578254f 64 Float_t Weight(TParticle* part);
65 Float_t Weight(TParticle* part1, TParticle* part);
f87cfe57 66 Float_t DecayProbability(TParticle* part);
7d566a7d 67
fe4da5cc 68 private:
69 void FirstPartner();
70 void NextPartner();
71 void FirstPartnerSelected();
72 void NextPartnerSelected();
1578254f 73 Int_t Origin(TParticle* part);
74 TParticle* Parent(TParticle* part);
75 TParticle* Partner();
d430df3f 76 Int_t Type(TParticle *part);
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