-#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 <TBrowser.h>
-#include <TList.h>
-#include <TTree.h>
-#include <TROOT.h>
+
+// 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(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();
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(TParticle* part) const;
+ Bool_t Selected(TParticle* part1, 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(TParticle* part1, TParticle* part) const;
+ Float_t PT(TParticle* part1, TParticle* part) const;
+ Float_t Pz(TParticle* part1, TParticle* part) const;
+ Float_t Y(TParticle* part1, 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(TParticle* part1, 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(TParticle* part) const;
+ Float_t Weight(TParticle* part1, TParticle* part) const;
+ Float_t DecayProbability(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(TParticle* part) const;
+ TParticle* Parent(TParticle* part) const;
+ TParticle* Partner() const;
+ Int_t Type(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
+
+
+
+