]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliDimuCombinator.h
Updated version.
[u/mrichter/AliRoot.git] / EVGEN / AliDimuCombinator.h
index 79dde5279bff1a4d18f26786d5f20495a326f6fa..da0cdd38246e0e17f213be6b8efcc2d3481b1c7f 100644 (file)
@@ -1,48 +1,44 @@
-#ifndef _AliDimuCombinator_H
-#define _AliDimuCombinator_H
-#include "GParticle.h"
-#include <TBrowser.h>
-#include <TList.h>
-#include <TTree.h>
-#include <TROOT.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$ */
+
+
+//  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
-    GParticle* FirstMuon();
-    GParticle* NextMuon();
+    TParticle* FirstMuon();
+    TParticle* NextMuon();
 //  Single muons selected
-    GParticle* FirstMuonSelected();
-    GParticle* NextMuonSelected();
+    TParticle* FirstMuonSelected();
+    TParticle* NextMuonSelected();
 //  Dimuons    
-    void FirstMuonPair(GParticle* & muon1, GParticle* & muon2);
-    void NextMuonPair(GParticle* & muon1, GParticle* & muon2);
+    void FirstMuonPair(TParticle* & muon1, TParticle* & muon2);
+    void NextMuonPair(TParticle* & muon1, TParticle* & muon2);
 //  Dimuons selected    
-    void FirstMuonPairSelected(GParticle* & muon1, GParticle* & muon2);
-    void NextMuonPairSelected(GParticle* & muon1, GParticle* & muon2);
+    void FirstMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
+    void NextMuonPairSelected(TParticle* & muon1, TParticle* & muon2);
 //  Loop over all prticles    
     void ResetRange();
 //  Set two ranges for dimuon loop    
@@ -50,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(GParticle* part);
-    Bool_t Selected(GParticle* part1, GParticle* 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(GParticle* part1, GParticle* part);
-    Float_t PT(GParticle* part1, GParticle* part);
-    Float_t Pz(GParticle* part1, GParticle* part);
-    Float_t Y(GParticle* part1, GParticle* 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(GParticle* part1, GParticle* part2);
-    void    SetRate(Float_t rate){fRate1=rate;}
-    void    SetRate(Float_t rate1, Float_t rate2 ){fRate1=rate1; fRate2=rate2;}
-    Float_t Weight(GParticle* part);
-    Float_t Weight(GParticle* part1, GParticle* part);
-    Float_t Decay_Prob(GParticle* 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(GParticle* part);
-    GParticle* Parent(GParticle* part);
-    GParticle* Partner();
-    Int_t Type(GParticle *part){return part->GetKF();}
-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;
-    GParticle *fmuon1;
-    GParticle *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
 
 
 
 
+
+
+
+