]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - EVGEN/AliDimuCombinator.h
PWGJE
[u/mrichter/AliRoot.git] / EVGEN / AliDimuCombinator.h
... / ...
CommitLineData
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
16class TClonesArray;
17class TParticle;
18
19
20class AliDimuCombinator:
21 public TObject
22{
23public:
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