ROOT logo
#ifndef ALIDIMUCOMBINATOR_H
#define ALIDIMUCOMBINATOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */


//  Class for dimuon analysis and fast dimuon simulation.
//  It uses the AliRun particle tree.
//  Comments and suggestions to andreas.morsch@cern.ch


#include <TObject.h>

class TClonesArray;
class TParticle;


class AliDimuCombinator:
    public TObject 
{
public:
    AliDimuCombinator();
    void  Copy(TObject &combi) const;
//    
//  Iterators
//  Access to particle stack
    TParticle* Particle(Int_t i) const;
//  Single muons
    TParticle* FirstMuon();
    TParticle* NextMuon();
//  Single muons selected
    TParticle* FirstMuonSelected();
    TParticle* NextMuonSelected();
//  Dimuons    
    void FirstMuonPair(TParticle* & muon1, TParticle* & muon2);
    void NextMuonPair(TParticle* & muon1, TParticle* & muon2);
//  Dimuons selected    
    void FirstMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
    void NextMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
//  Loop over all prticles    
    void ResetRange();
//  Set two ranges for dimuon loop    
    void SetFirstRange (Int_t from, Int_t to);
    void SetSecondRange(Int_t from, Int_t to);    
//  Cuts
    void SetPtMin(Float_t ptmin) {fPtMin=ptmin;}
    void SetEtaCut(Float_t etamin, Float_t etamax)
	{fEtaMin=etamin; fEtaMax=etamax;}
    Bool_t Selected(const TParticle* part) const;
    Bool_t Selected(const TParticle* part1, const TParticle* part2) const;
// Kinematics
    Float_t Mass(const TParticle* part1, const TParticle* part) const;
    Float_t PT(const TParticle* part1, const TParticle* part) const;
    Float_t Pz(const TParticle* part1, const TParticle* part) const;
    Float_t Y(const TParticle* part1, const TParticle* part) const;
// Response
    void SmearGauss(Float_t width, Float_t & value) const;
// Weight
    Bool_t  Correlated(const TParticle* part1, const TParticle* part2) const;
    void    SetRate(Float_t rate) {fRate1=rate;}
    void    SetRate(Float_t rate1, Float_t rate2 ) {fRate1=rate1; fRate2=rate2;}
    Float_t Weight(const TParticle* part) const;
    Float_t Weight(const TParticle* part1, const TParticle* part) const;
    Float_t DecayProbability(const TParticle* part) const;
    
 private:
    void FirstPartner();
    void NextPartner();
    void FirstPartnerSelected();
    void NextPartnerSelected();
    Int_t Origin(const TParticle* part) const;
    TParticle* Parent(const TParticle* part) const;
    TParticle* Partner() const;
    Int_t Type(const TParticle *part) const;
    AliDimuCombinator(const AliDimuCombinator &combinator);
    AliDimuCombinator & operator=(const AliDimuCombinator & rhs);

 private:
    Int_t fNParticle;              // Number of particles
    Int_t fImuon1;                 // Index of first muon
    Int_t fImuon2;                 // Index of second muon
    Int_t fImin1;                  // Lowest index for first   muon  
    Int_t fImin2;                  // Lowest index for second  muon 
    Int_t fImax1;                  // Highest index for first  muon  
    Int_t fImax2;                  // Highest index for second muon 
    Float_t fRate1;                // weight factor  
    Float_t fRate2;                // weight factor
    TParticle *fMuon1;             // First muon
    TParticle *fMuon2;             // Second muon
    Float_t fPtMin;                // pT-cut 
    Float_t fEtaMin;               // Minimum pseudorapidity cut
    Float_t fEtaMax;               // Maximum pseudorapidity cut
    
    ClassDef(AliDimuCombinator,1)  // Tools for dimuon combinatoric studies
};
#endif








 AliDimuCombinator.h:1
 AliDimuCombinator.h:2
 AliDimuCombinator.h:3
 AliDimuCombinator.h:4
 AliDimuCombinator.h:5
 AliDimuCombinator.h:6
 AliDimuCombinator.h:7
 AliDimuCombinator.h:8
 AliDimuCombinator.h:9
 AliDimuCombinator.h:10
 AliDimuCombinator.h:11
 AliDimuCombinator.h:12
 AliDimuCombinator.h:13
 AliDimuCombinator.h:14
 AliDimuCombinator.h:15
 AliDimuCombinator.h:16
 AliDimuCombinator.h:17
 AliDimuCombinator.h:18
 AliDimuCombinator.h:19
 AliDimuCombinator.h:20
 AliDimuCombinator.h:21
 AliDimuCombinator.h:22
 AliDimuCombinator.h:23
 AliDimuCombinator.h:24
 AliDimuCombinator.h:25
 AliDimuCombinator.h:26
 AliDimuCombinator.h:27
 AliDimuCombinator.h:28
 AliDimuCombinator.h:29
 AliDimuCombinator.h:30
 AliDimuCombinator.h:31
 AliDimuCombinator.h:32
 AliDimuCombinator.h:33
 AliDimuCombinator.h:34
 AliDimuCombinator.h:35
 AliDimuCombinator.h:36
 AliDimuCombinator.h:37
 AliDimuCombinator.h:38
 AliDimuCombinator.h:39
 AliDimuCombinator.h:40
 AliDimuCombinator.h:41
 AliDimuCombinator.h:42
 AliDimuCombinator.h:43
 AliDimuCombinator.h:44
 AliDimuCombinator.h:45
 AliDimuCombinator.h:46
 AliDimuCombinator.h:47
 AliDimuCombinator.h:48
 AliDimuCombinator.h:49
 AliDimuCombinator.h:50
 AliDimuCombinator.h:51
 AliDimuCombinator.h:52
 AliDimuCombinator.h:53
 AliDimuCombinator.h:54
 AliDimuCombinator.h:55
 AliDimuCombinator.h:56
 AliDimuCombinator.h:57
 AliDimuCombinator.h:58
 AliDimuCombinator.h:59
 AliDimuCombinator.h:60
 AliDimuCombinator.h:61
 AliDimuCombinator.h:62
 AliDimuCombinator.h:63
 AliDimuCombinator.h:64
 AliDimuCombinator.h:65
 AliDimuCombinator.h:66
 AliDimuCombinator.h:67
 AliDimuCombinator.h:68
 AliDimuCombinator.h:69
 AliDimuCombinator.h:70
 AliDimuCombinator.h:71
 AliDimuCombinator.h:72
 AliDimuCombinator.h:73
 AliDimuCombinator.h:74
 AliDimuCombinator.h:75
 AliDimuCombinator.h:76
 AliDimuCombinator.h:77
 AliDimuCombinator.h:78
 AliDimuCombinator.h:79
 AliDimuCombinator.h:80
 AliDimuCombinator.h:81
 AliDimuCombinator.h:82
 AliDimuCombinator.h:83
 AliDimuCombinator.h:84
 AliDimuCombinator.h:85
 AliDimuCombinator.h:86
 AliDimuCombinator.h:87
 AliDimuCombinator.h:88
 AliDimuCombinator.h:89
 AliDimuCombinator.h:90
 AliDimuCombinator.h:91
 AliDimuCombinator.h:92
 AliDimuCombinator.h:93
 AliDimuCombinator.h:94
 AliDimuCombinator.h:95
 AliDimuCombinator.h:96
 AliDimuCombinator.h:97
 AliDimuCombinator.h:98
 AliDimuCombinator.h:99
 AliDimuCombinator.h:100
 AliDimuCombinator.h:101
 AliDimuCombinator.h:102
 AliDimuCombinator.h:103
 AliDimuCombinator.h:104
 AliDimuCombinator.h:105
 AliDimuCombinator.h:106