X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliDimuCombinator.cxx;h=0933aeda574ef42bb88cc9e280dacfd3cb7c0401;hb=07a863ca3c51edad292284238ee4bf7f34a53187;hp=12f70e2283f2c5b6a46d4aa6786fc5495a272856;hpb=8e697b5cba7302f85e0e803a741ec9b5587fe865;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliDimuCombinator.cxx b/EVGEN/AliDimuCombinator.cxx index 12f70e2283f..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. * @@ -13,86 +13,79 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -Revision 1.10 2001/03/27 11:14:54 morsch -Weight calculation for correlated particles updated: -- Decay probability is counted once if muons are decay products -of the same mother particle. Otherwise, it's counted twice. - -Revision 1.9 2001/03/08 13:30:43 morsch -Make it work with particle stack of V3.05. - -Revision 1.8 2000/12/21 16:24:06 morsch -Coding convention clean-up - -Revision 1.7 2000/10/02 15:16:37 morsch -Correct coding rule violation for member data names of type fi -> fI. - -Revision 1.6 2000/06/14 15:19:47 morsch -Include clean-up (IH) - -Revision 1.5 2000/06/09 20:35:32 morsch -All coding rule violations except RS3 corrected +/* $Id$ */ -Revision 1.4 2000/03/20 18:03:24 morsch -Change muon particle code to PDG code. - -Revision 1.3 1999/09/29 09:24:08 fca -Introduction of the Copyright and cvs Log - -*/ - -/* - 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 "AliDimuCombinator.h" -#include "AliPDG.h" -#include "AliRun.h" -#include #include #include +#include +#include #include +#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() @@ -190,7 +183,7 @@ void AliDimuCombinator::NextPartnerSelected() } -TParticle* AliDimuCombinator::Partner() +TParticle* AliDimuCombinator::Partner() const { // Returns current partner for muon to form a dimuon return fMuon2; @@ -265,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 // @@ -278,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 // @@ -287,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 // @@ -304,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 // @@ -314,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 // @@ -332,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 // @@ -341,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 // @@ -390,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 @@ -457,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 // @@ -507,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(); @@ -516,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"); }