]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliDimuCombinator.h
AliCaloPID: Correct matching rejection in case of recalculation in the analysis,...
[u/mrichter/AliRoot.git] / EVGEN / AliDimuCombinator.h
index ae6a593d6d41f503629df23d5270f97926b8736b..466479a4fb2b8268066c27e7216e7bae7bef7a2b 100644 (file)
@@ -4,7 +4,13 @@
  * See cxx source for full Copyright notice                               */
 
 /* $Id$ */
-#include <TParticle.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;
@@ -15,10 +21,12 @@ class AliDimuCombinator:
     public TObject 
 {
 public:
-    AliDimuCombinator(TClonesArray* Partarray);
-    AliDimuCombinator(const AliDimuCombinator &combinator);
+    AliDimuCombinator();
+    void  Copy(TObject &combi) const;
 //    
 //  Iterators
+//  Access to particle stack
+    TParticle* Particle(Int_t i) const;
 //  Single muons
     TParticle* FirstMuon();
     TParticle* NextMuon();
@@ -40,46 +48,47 @@ public:
     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);
+    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 DecayProbability(TParticle* part);
-    AliDimuCombinator & operator=(const AliDimuCombinator & rhs);
+    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;      // MC Event
+    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 
+    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
+    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
@@ -92,3 +101,6 @@ private:
 
 
 
+
+
+