X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliDimuCombinator.h;h=466479a4fb2b8268066c27e7216e7bae7bef7a2b;hb=b929d7c3d0b348a948d947a93462bbaa0963f6d1;hp=0ce339047afa5490d6e9cb4a01cc3589dc7b0157;hpb=3da306186bdfe9b8dedf54c4b9cdcf2bff5b132c;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliDimuCombinator.h b/EVGEN/AliDimuCombinator.h index 0ce339047af..466479a4fb2 100644 --- a/EVGEN/AliDimuCombinator.h +++ b/EVGEN/AliDimuCombinator.h @@ -1,41 +1,32 @@ -#ifndef _AliDimuCombinator_H -#define _AliDimuCombinator_H +#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$ */ -#include "TParticle.h" -#include -#include -#include -#include + +// Class for dimuon analysis and fast dimuon simulation. +// It uses the AliRun particle tree. +// Comments and suggestions to andreas.morsch@cern.ch + + +#include + +class TClonesArray; +class TParticle; class AliDimuCombinator: public TObject { public: - AliDimuCombinator(TClonesArray* Partarray){ - fPartArray=Partarray; - fNParticle=fPartArray->GetEntriesFast(); - - fimuon1 =0; - fimuon2 =0; - fmuon1 =0; - fmuon2 =0; - fimin1 = 0; - fimin2 = 0; - fimax1 = fNParticle; - fimax2 = fNParticle; - fPtMin =0; - fEtaMin =-10; - fEtaMax =-10; - fRate1=1.; - fRate2=1.; - } + AliDimuCombinator(); + void Copy(TObject &combi) const; // // Iterators +// Access to particle stack + TParticle* Particle(Int_t i) const; // Single muons TParticle* FirstMuon(); TParticle* NextMuon(); @@ -55,52 +46,61 @@ public: 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(TParticle* part); - Bool_t Selected(TParticle* part1, TParticle* part2); + 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(TParticle* part1, TParticle* part); - Float_t PT(TParticle* part1, TParticle* part); - Float_t Pz(TParticle* part1, TParticle* part); - Float_t Y(TParticle* part1, TParticle* part); + 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); + void SmearGauss(Float_t width, Float_t & value) const; // Weight - Bool_t Correlated(TParticle* part1, TParticle* part2); - void SetRate(Float_t rate){fRate1=rate;} - void SetRate(Float_t rate1, Float_t rate2 ){fRate1=rate1; fRate2=rate2;} - Float_t Weight(TParticle* part); - Float_t Weight(TParticle* part1, TParticle* part); - Float_t Decay_Prob(TParticle* part); + 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(TParticle* part); - TParticle* Parent(TParticle* part); - TParticle* Partner(); - Int_t Type(TParticle *part){return part->GetPdgCode();} -private: - TClonesArray *fPartArray; - Int_t fNParticle; - Int_t fimuon1; - Int_t fimuon2; - Int_t fimin1; - Int_t fimin2; - Int_t fimax1; - Int_t fimax2; - Float_t fRate1; - Float_t fRate2; - TParticle *fmuon1; - TParticle *fmuon2; - Float_t fPtMin; - Float_t fEtaMin; - Float_t fEtaMax; - ClassDef(AliDimuCombinator,1) // Dimuon Combinator + 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 + + + +