X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliDimuCombinator.cxx;h=0933aeda574ef42bb88cc9e280dacfd3cb7c0401;hb=9c5d29dee88f8ede9d2d37273dc356e61b17d2f4;hp=f08225f292093d207a5e2e63d4a91a625babb341;hpb=88cb7938ca21d4a80991d4e7aa564008c29340f7;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliDimuCombinator.cxx b/EVGEN/AliDimuCombinator.cxx index f08225f2920..0933aeda574 100644 --- a/EVGEN/AliDimuCombinator.cxx +++ b/EVGEN/AliDimuCombinator.cxx @@ -1,4 +1,4 @@ -/************************************************************************** + /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * @@ -15,13 +15,13 @@ /* $Id$ */ -/* - Class for dimuon analysis and fast dimuon simulation. - It provides single and dimuon iterators, cuts, weighting, kinematic - It uses the AliRun particle tree. - Comments and suggestions to - andreas.morsch@cern.ch -*/ +// +// Class for dimuon analysis and fast dimuon simulation. +// It provides single and dimuon iterators, cuts, weighting, kinematic +// It uses the AliRun particle tree. +// Comments and suggestions to +// andreas.morsch@cern.ch + #include #include @@ -31,40 +31,61 @@ #include "AliDimuCombinator.h" #include "AliRun.h" +#include "AliMC.h" // ClassImp(AliDimuCombinator) - AliDimuCombinator::AliDimuCombinator() + +AliDimuCombinator::AliDimuCombinator(): + fNParticle((Int_t) (gAlice->TreeK())->GetEntries()), + fImuon1(0), + fImuon2(0), + fImin1(0), + fImin2(0), + fImax1(fNParticle), + fImax2(fNParticle), + fRate1(1.), + fRate2(1.), + fMuon1(0), + fMuon2(0), + fPtMin(0.), + fEtaMin(-10.), + fEtaMax(10.) { // Constructor fNParticle = (Int_t) (gAlice->TreeK())->GetEntries(); - 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::AliDimuCombinator(const AliDimuCombinator & combinator) + :TObject(combinator), + fNParticle(0), + fImuon1(0), + fImuon2(0), + fImin1(0), + fImin2(0), + fImax1(0), + fImax2(0), + fRate1(0), + fRate2(0), + fMuon1(0), + fMuon2(0), + fPtMin(0.), + fEtaMin(0.), + fEtaMax(0.) { // Dummy copy constructor + combinator.Copy(*this); } // // Iterators // -TParticle* AliDimuCombinator::Particle(Int_t i) +TParticle* AliDimuCombinator::Particle(Int_t i) const { - return gAlice->Particle(i); +// Return next particle +// + return gAlice->GetMCApp()->Particle(i); } TParticle* AliDimuCombinator::FirstMuon() @@ -162,7 +183,7 @@ void AliDimuCombinator::NextPartnerSelected() } -TParticle* AliDimuCombinator::Partner() +TParticle* AliDimuCombinator::Partner() const { // Returns current partner for muon to form a dimuon return fMuon2; @@ -237,7 +258,7 @@ void AliDimuCombinator::SetSecondRange(Int_t from, Int_t to) // Selection // -Bool_t AliDimuCombinator::Selected(TParticle* part) +Bool_t AliDimuCombinator::Selected(TParticle* part) const { // Selection cut for single muon // @@ -250,7 +271,7 @@ Bool_t AliDimuCombinator::Selected(TParticle* part) } } -Bool_t AliDimuCombinator::Selected(TParticle* part1, TParticle* part2) +Bool_t AliDimuCombinator::Selected(TParticle* part1, TParticle* part2) const { // Selection cut for dimuons // @@ -259,7 +280,7 @@ Bool_t AliDimuCombinator::Selected(TParticle* part1, TParticle* part2) // // Kinematics // -Float_t AliDimuCombinator::Mass(TParticle* part1, TParticle* part2) +Float_t AliDimuCombinator::Mass(TParticle* part1, TParticle* part2) const { // Invariant mass // @@ -276,7 +297,7 @@ Float_t AliDimuCombinator::Mass(TParticle* part1, TParticle* part2) } } -Float_t AliDimuCombinator::PT(TParticle* part1, TParticle* part2) +Float_t AliDimuCombinator::PT(TParticle* part1, TParticle* part2) const { // Transverse momentum of dimuons // @@ -286,14 +307,14 @@ Float_t AliDimuCombinator::PT(TParticle* part1, TParticle* part2) return TMath::Sqrt(px*px+py*py); } -Float_t AliDimuCombinator::Pz(TParticle* part1, TParticle* part2) +Float_t AliDimuCombinator::Pz(TParticle* part1, TParticle* part2) const { // Pz of dimuon system // return part1->Pz()+part2->Pz(); } -Float_t AliDimuCombinator::Y(TParticle* part1, TParticle* part2) +Float_t AliDimuCombinator::Y(TParticle* part1, TParticle* part2) const { // Rapidity of dimuon system // @@ -304,7 +325,7 @@ Float_t AliDimuCombinator::Y(TParticle* part1, TParticle* part2) } // Response // -void AliDimuCombinator::SmearGauss(Float_t width, Float_t & value) +void AliDimuCombinator::SmearGauss(Float_t width, Float_t & value) const { // Apply gaussian smearing // @@ -313,7 +334,7 @@ void AliDimuCombinator::SmearGauss(Float_t width, Float_t & value) // Weighting // -Float_t AliDimuCombinator::DecayProbability(TParticle* part) +Float_t AliDimuCombinator::DecayProbability(TParticle* part) const { // Calculate decay probability for muons from pion and kaon decays // @@ -362,7 +383,7 @@ Float_t AliDimuCombinator::DecayProbability(TParticle* part) //End_Html -Float_t AliDimuCombinator::Weight(TParticle* part1, TParticle* part2) +Float_t AliDimuCombinator::Weight(TParticle* part1, TParticle* part2) const { // Dimuon weight @@ -429,39 +450,32 @@ Indeed the 2 muons come from the same mother so the //End_Html -Float_t AliDimuCombinator::Weight(TParticle* part) +Float_t AliDimuCombinator::Weight(TParticle* part) const { // Single muon weight return (part->GetWeight())*(Parent(part)->GetWeight())*fRate1; } -Bool_t AliDimuCombinator::Correlated(TParticle* part1, TParticle* part2) +Bool_t AliDimuCombinator::Correlated(TParticle* part1, TParticle* part2) const { // Check if muons are correlated // if ((Origin(part1) >= 0) && Origin(part1) == Origin(part2)) { -/* - printf("\n origin %d %d ", - Type(Particle(Origin(part1))), - Type(Particle(Origin(part2)))); - printf("\n parent %d %d \n \n ", - Type(Parent(part1)), - Type(Parent(part2))); -*/ + return kTRUE; } else { return kFALSE; } } -TParticle* AliDimuCombinator::Parent(TParticle* part) +TParticle* AliDimuCombinator::Parent(TParticle* part) const { // Return pointer to parent // return Particle(part->GetFirstMother()); } -Int_t AliDimuCombinator::Origin(TParticle* part) +Int_t AliDimuCombinator::Origin(TParticle* part) const { // Return pointer to primary particle // @@ -479,7 +493,7 @@ Int_t AliDimuCombinator::Origin(TParticle* part) return iparent; } -Int_t AliDimuCombinator::Type(TParticle *part) +Int_t AliDimuCombinator::Type(TParticle *part) const { // Return particle type for return part->GetPdgCode(); @@ -488,14 +502,15 @@ return part->GetPdgCode(); AliDimuCombinator& AliDimuCombinator::operator=(const AliDimuCombinator& rhs) { // Assignment operator + rhs.Copy(*this); return *this; } -void AliDimuCombinator::Copy(AliDimuCombinator &combi) const +void AliDimuCombinator::Copy(TObject&) const { // - // Copy *this onto lego -- not implemented + // Copy // Fatal("Copy","Not implemented!\n"); }